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提供返回值的主要内容,如果未能解决你的问题,请参考以下文章

Centos ssh和scp利用expect自动填充密码

ssh采用expect实现自动输入密码登录拷贝

分发系统-expect

ssh+expect+scp实现服务器集群自动化搭建

linux系统,多台机器ssh免密码登录同一台机器执行某个脚本,不需要expect

实现ssh 自动登录