Linux 使用expect工具和scp命令实现自动复制传输文件

来源:互联网 发布:小白菜新店提取软件 编辑:程序博客网 时间:2024/06/10 13:06

新建copy_file.exp文件

文件内容如下:

#!/usr/expect/bin/expect##############################################################                                                           # #       1.Copy install-package to destination host          ##                                                           ################################################################ check parameter numbers   #if {$argc < 8} {puts " Error : Parameter is error."puts " Usage : ./copy_file.exp local_file_path local_file_name remote_user remote_host remote_host_password remote_file_path remote_file_name local_to_remote:0|1"puts "Example: ./copy_file.exp /home/uxdb test.zip uxdb 192.168.1.234 123456 /home/uxdb test.zip 0"exit 1}set local_file_path [lindex $argv 0]set local_file_name [lindex $argv 1]set remote_user [lindex $argv 2]set remote_host [lindex $argv 3]set remote_host_password [lindex $argv 4]set remote_file_path [lindex $argv 5]set remote_file_name [lindex $argv 6]set local_to_remote [lindex $argv 7]set timeout 5set copy_timeout 60 ;#复制文件超时时间:60秒## check local_to_remote parameter#if {$local_to_remote != 0 && $local_to_remote != 1} {puts "The last parameter is failed,please input 0 or 1"exit 1}## start to copy#if {$local_to_remote == 0} {set filename $local_file_namespawn scp $local_file_path/$local_file_name $remote_user@$remote_host:$remote_file_path/$remote_file_name} else {set filename $remote_file_namespawn scp $remote_user@$remote_host:$remote_file_path/$remote_file_name $local_file_path/$local_file_name}expect {"*(yes/no)?" {send "yes\r"exp_continue        }"*password:" {send "$remote_host_password\r"}}expect {"Host key verification failed." {puts "\rverify failed!"exit 1}"Permission denied*" {puts "\rpassword is error!"exit 1}"$filename" {}}set timeout $copy_timeoutexpect eof {puts "\r******** copy finished! **********"}




原创粉丝点击