美文网首页
【Linux-运维-自动化】expect批量scp中断 (spa

【Linux-运维-自动化】expect批量scp中断 (spa

作者: blue_smile | 来源:发表于2016-10-12 20:40 被阅读0次

【需求背景】

从不同机器之间批量copy大文件,想实现一个脚本自动化运作

【实现方法】

#!/usr/bin/expect
set user [lindex $argv 0]
set ip [lindex $argv 1]
set passwd [lindex $argv 2]
set srcfile [lindex $argv 3]
set dstdir [lindex $argv 4]
spawn scp $user@$ip:$srcfile $dstdir
expect {
"yes/no)?" { send "yes\r";puts "yes" }
"assword:" { send "$passwd\r" }
}
expect eof

【问题】

由于文件较大(10G-100G不等),每次拷贝文件,操作会在一段时间后就会自动中断,导致文件无法完全传输

【问题产生原因】

expect中执行命令是有一个timeout的设定的,默认超时时间为10s。
若一条命令未timeout限定时间内执行完,就会中断该条命令的下一条命令。
备注:
这个特性最初设置是为了防止某些命令执行完后导致死机的情况

【解决方案】

在expect脚本中设定timeout,覆盖原本的timeout即可
#!/usr/bin/expect
set user [lindex $argv 0]
set ip [lindex $argv 1]
set passwd [lindex $argv 2]
set srcfile [lindex $argv 3]
set dstdir [lindex $argv 4]

set timeout 2000
spawn scp $user@$ip:$srcfile $dstdir
expect {
"yes/no)?" { send "yes\r";puts "yes" }
"assword:" { send "$passwd\r" }
timeout { puts "$IP time out" ;exit 1 }
}
expect eof

相关文章

  • 【Linux-运维-自动化】expect批量scp中断 (spa

    【需求背景】 从不同机器之间批量copy大文件,想实现一个脚本自动化运作 【实现方法】 #!/usr/bin/ex...

  • 使用 ansible 批量管理 windows主机

    概述 Ansible是自动化运维工具,基于Python开发,实现了批量系统配置、批量程序部署、批量运行命令等功能。...

  • 自动化运维—Ansible

    前言 Ansible是自动化运维的工具,基于Python开发,实现了批量系统配置、批量程序部署、批量运行命令等功能...

  • 自动运维工具 Ansible 实践与总结

    ansible是一款自动化运维工具,基于Python开发,可以实现批量系统设置、批量程序部署、批量执行命令等功能。...

  • ansible(1) 安装和介绍

    简介 ansible是新出现的自动化运维工具,急于python开发。实现了批量系统配置,批量程序部署,批量运行命令...

  • scp免密码

    每次scp的时候都会提示输入密码,这在集群运维的时候太不方便,写个脚本都不能自动化。要让scp的时候免密码,其实也...

  • 如何使用Python调用Ansible Playbook

    0 - 背景 ansible是一个非常简单、易用的运维工具,可以批量执行命令、上传文件等自动化运维操作。不过在调用...

  • ansible介绍

    1. 介绍 ansible是一个自动化运维工具,基于Python研发。糅合了众多老牌运维工具的优点实现了批量操作系...

  • ansible初识

    1. ansible简介 ansible是一款基于Python的自动化运维工具,可以对系统进行批量配置、批量程序部...

  • Ansible Module 快速入门 ad-hoc

    1.自动化运维的含义 1.手动运维时代 2.自动化运维时代 3.自动化运维工具给运维带来的好处 2.Ansible...

网友评论

      本文标题:【Linux-运维-自动化】expect批量scp中断 (spa

      本文链接:https://www.haomeiwen.com/subject/qnpbyttx.html