首页 > 代码库 > expect自动远程拷贝脚本
expect自动远程拷贝脚本
expect自动远程拷贝脚本,利用rsync命令,脚本内容如下:
#!/usr/bin/expect --proc Usage_Exit {self} { puts "" puts "Usage: $self ip user passwd port sourcefile destdir direction bwlimit timeout" puts "" puts " sourcefile: a file or directory to be transferred" puts " 需要拷贝目录时目录名后不要带 /, 否则会拷贝该目录下的所有文件" puts " destdir: the location that the sourcefile to be put into" puts " direction: pull or push" puts " pull: remote -> local" puts " push: local -> remote" puts " bwlimit: bandwidth limit, kbit/s, 0 means no limit" puts " timeout: timeout of expect, s, -1 means no timeout" puts "" exit 1}if { [llength $argv] < 9 } { Usage_Exit $argv0}set ip [lindex $argv 0]set user [lindex $argv 1]set passwd [lindex $argv 2]set port [lindex $argv 3]set sourcefile [lindex $argv 4]set destdir [lindex $argv 5]set direction [lindex $argv 6]set bwlimit [lindex $argv 7]set timeoutflag [lindex $argv 8]set yesnoflag 0set timeout $timeoutflagfor {} {1} {} {# for is only used to retry when "Interrupted system call" occuredif { $direction == "pull" } { if { $bwlimit > 0 } { spawn rsync -crazP --bwlimit=$bwlimit -e "/usr/bin/ssh -q -l$user -p$port" $ip:$sourcefile $destdir } elseif { $bwlimit == 0 } { spawn rsync -crazP -e "/usr/bin/ssh -q -l$user -p$port" $ip:$sourcefile $destdir } else { Usage_Exit $argv0 }} elseif { $direction == "push" } { if { $bwlimit > 0 } { spawn rsync -crazP --bwlimit=$bwlimit -e "/usr/bin/ssh -q -l$user -p$port" $sourcefile $ip:$destdir } elseif { $bwlimit ==