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 $RemoteUser@$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 $?`

 

posted @ 2018-04-03 17:56  01234567  阅读(205)  评论(0编辑  收藏  举报