Linux下shell调用expect进行批量升级

本文介绍如何通过Linux shell脚本配合expect工具,实现自动化批量升级多台远程主机上的软件包。主要涉及scp和ssh命令,以及expect处理密码自动输入,确保无人值守升级过程的顺利进行。

        执行main.sh脚本即可实现无手执对hostname中各IP机器进行updatefilename升级包的升级。tcl和expect压缩包放在相同路径下,$TSMIS_ROOT为环境变量。

CopyFile.exp文件:

#!/usr/bin/expect -f
#输入分析仪ip以及需要上传的文件名和TSMIS_ROOT环境变量
set ip [lindex $argv 0]
set localfile [lindex $argv 1]
set  TSMIS_ROOT  [lindex $argv 2]

#scp拷贝需要传输的文件到指定目录,并且跳过手动输入部分
spawn scp -r $localfile root@$ip:$TSMIS_ROOT/tmp/$localfile
set timeout 300
expect {
 "yes/no"  {send "yes\r" ; exp_continue}
 "*assword:" {send "111111\n"}
 }
set timeout 300
send "exit\r"
expect eof

 

 

 

RunUpdate.exp文件:

#!/usr/bin/expect -f

set ip [lindex $argv 0]
set updatefile [lindex $argv 1]
set TSMIS_ROOT [lindex  $argv 2]

spawn ssh root@$ip

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值