expect实现自动scp和ssh登录后执行命令,并向bash提供返回值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了expect实现自动scp和ssh登录后执行命令,并向bash提供返回值相关的知识,希望对你有一定的参考价值。
#!/bin/bash
# 全局变量:用户名,普通用户密码,root密码
loginname="icgsu"
userpwd="netentsec"
rootpwd="netentsec"
# 读取iplist
cat /root/iplist | while read line
do
ip=($line)
# scp脚本及ssh登录执行
/usr/bin/expect<<EOF
set timeout 10
spawn scp /root/check_and_fix.sh [email protected]$ip:/home/icgsu
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/icgsu/check_and_fix.sh\r"
expect {
"a4e3eb6a16f78129cf78d67d1c737ce9" { send "/home/icgsu/check_and_fix.sh\r"}
}
expect {
"存在漏洞" { exit 0 }
"没有漏洞" { exit 0 }
}
expect eof
exit 1
}
}
EOF
# 记录修复日志
if [ $? -eq 0 ]
then
echo "$ip 漏洞修复完成" >> /var/log/patch.log
else
echo "$ip 漏洞修复失败" >> /var/log/patch.log
fi
done
本文出自 “机智少年普朗克” 博客,请务必保留此出处http://armolee.blog.51cto.com/6288560/1931432
以上是关于expect实现自动scp和ssh登录后执行命令,并向bash提供返回值的主要内容,如果未能解决你的问题,请参考以下文章