expect 交互 模拟ssh 登陆

Posted Weblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了expect 交互 模拟ssh 登陆相关的知识,希望对你有一定的参考价值。

模拟ssh登录

#!/bin/bash
Ip=192.168.1.6            # 循环就行
RemoteUser=user           # 普通用户
RemotePasswd=userpasswd   # 普通用户的密码
RemoteRootPasswd=rootpasswd
/usr/bin/expect -c "
set timeout -1
spawn ssh -t -p $Port -o StrictHostKeyChecking=no [email protected]$Ip
expect {
    password {
        send_user RemotePasswd
        send ${RemotePasswd}\r;
        expect {
            \"does not exist\" {
send_user \"root user does not exist\n\"
exit 10
            }
            password {
send_user \"user passwd error\n\"
exit 5
            }
            Last {
send \"su - batch\n\"
expect {
    Password {
        send_user RemoteRootPasswd
        send ${RemoteRootPasswd}\r;
        expect {
            \"]#\" {
send \"sh /tmp/update.sh update\n \"
expect {
    \"]#\" {
        send_user ${Ip}_Update_Done\n
    }
    eof
}
            }
        }
    }
}
            }
        }
    }
    \"No route to host\" {
        send_user \"host not found\n\"
        exit 4
    }
    \"Invalid argument\" {
        send_user \"incorrect parameter\n\"
        exit 8
    }
    \"Connection refused\" {
        send_user \"invalid port parameters\n\"
        exit 9
    }
    \"does not exist\" {
        send_user \"root user does not exist\"
        exit 10
    }
    timeout {
        send_user \"connection timeout \n\"
        exit 3
    }
    eof
}
"
state=`echo $?`

 

以上是关于expect 交互 模拟ssh 登陆的主要内容,如果未能解决你的问题,请参考以下文章

利用spawn和expect自动交互并返回交互结果

Expect实现ssh非交互登录

编写脚本实现登陆远程主机

sshpass+expect解决交互式问题

利用expect和sshpass完美非交互性执行远端命令

expect 自动化交互软件