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

新建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 5
set 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_name
	spawn scp $local_file_path/$local_file_name $remote_user@$remote_host:$remote_file_path/$remote_file_name
} else {
	set filename $remote_file_name
	spawn 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_timeout

expect eof {puts "\r******** copy finished! **********"}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

password-u

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值