expect实现定时scp

版权声明:原创文章,转载请注明出处。 https://blog.csdn.net/weixin_40559167/article/details/81669968

大半夜的进行异机数据迁移,由于数据量比较大,导出需要几个小时。
为了节约时间,想导出后就把备份文件scp到目标机器上,又不想等,于是搞了个定时scp的脚本:

[root@BJ-FT-1F-121-30 hysjb_20_249_250]# cat scp.exp 
set timeout -1
spawn scp 112.33.18.211:/apps/back/* .
match_max 100000
expect "password:"
send "mypassword\r"
expect eof

将mypassword修改为目标机器的密码即可。执行的命令:scp 192.168.66.65:/apps/back/* .
将脚本加到crontab里,计算一下导出需要的时间,设置定时任务。

参数:
timeout:默认的超时时钟设的是10秒,但可以自己设定.通过”set timeout 30”,可以将超时时钟设定为30秒.如果设定为-1的话,那么超时时钟将是无穷大。
match_max:在读取输出进行匹配时,超过2000字符将会强制将前面的字符丢弃。这个数目可以通过match_max来改变。(但太大的数目会降低匹配的效率)。

猜你喜欢

转载自blog.csdn.net/weixin_40559167/article/details/81669968