1. 程式人生 > >expect 非互動式sftp

expect 非互動式sftp

#網路摘錄整理

#!/usr/local/bin/expect -f 
#<---insert here your expect program location
#procedure to attempt connecting; result 0 if OK, 1 elsewhere
 proc connect {passw} {
  expect {
    "(yes/no)?" {send "yes/r";exp_continue}
    "password:" {send "$passw/r"
  expect {
     "sftp*" {
   return 0
      } 
  }
     }
  }
  # timed out
  return 1
 }
 
 #read the input parameters
 set user [lindex $argv 0]
 set passw [lindex $argv 1]
 set host [lindex $argv 2]
 set location [lindex $argv 3]
 set file1 [lindex $argv 4]
 
 #puts "Am citit:/n";
 #puts "user: $user";
 #puts "passw: $passw";
 #puts "host: $host";
 #puts "location: $location";
 #puts "file1: $file1";

 
 #check if all were provided
 if { $user == "" || $passw == "" || $host == "" || $location == "" || $file1 == "" }  {
   puts "Usage: <user> <passw> <host> <location> <file1 to send>/n"
   exit 1
 }
 
 #sftp to specified host and send the files
 spawn sftp [email protected]

$host
 
 set rez [connect $passw]
 if { $rez == 0 } {
   send "cd $location/r"
   set timeout -1
   send "put $file1/r"
   #send "ls -l/r"
   #send "quit/r"
   #send "mkdir testsftp/r"
   send "quit/r"
   expect eof
   exit 0
 }
 puts "/nCMD_ERR: connecting to server: $host!/n"
 exit 1
 0