expect返回值给shell_expect实现自动scp和ssh登录后执行命令,并向bash提供返回值

#!/bin/bash

# 全局变量:用户名,普通用户密码,root密码

loginname="xxxx"

userpwd="xxxx"

rootpwd="xxxx"

# 读取iplist(逐行存储IP地址)

cat /root/iplist | while read line

do

ip=($line)

# scp脚本及ssh登录执行

/usr/bin/expect<

set timeout 10

spawn scp /root/check_and_fix.sh $loginname@$ip:/home/xxxx

expect {

"*yes/no" {send "yes\r";exp_continue}

"*password:" {

send "$userpwd\r"

expect eof

}

}

spawn ssh $ip -l $loginname -p 22

expect {

"*yes/no" {send "yes\r";exp_continue}

"*password:" {

send "$userpwd\r"

expect "~]$"

send "su -\r"

expect "*assword:"

send "$rootpwd\r"

expect "~]#"

send "md5sum /home/xxx/check_and_fix.sh\r"

expect {

# a4e3eb6a16f78129cf78d67d1c737ce9为上述文件正确的md5值,若正确则执行该脚本

"a4e3eb6a16f78129cf78d67d1c737ce9" { send "/home/xxxx/check_and_fix.sh\r"}

}

expect {

"存在漏洞并已修复" { exit 0 }

# "存在漏洞并已修复"为脚本执行输出结果,匹配后退出expect并向bash提供返回值0

}

expect eof

exit 1    # 若md5值不正确,则匹配上一条expect eof后匹配exit 1,退出expect并向bash返回1

}

}

EOF

# 记录修复日志

if [ $? -eq 0 ]

then

echo "$ip 漏洞修复完成" >> /var/log/patch.log

else

echo "$ip 漏洞修复失败" >> /var/log/patch.log

fi

done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值