由于所在实验室的server实在是太多了…而且一般中间还有两个jumpserver…这个人又实在是太懒了,就瞎扣jio写了个差不多能用的expect脚本来方便登录各个服务器
#!/usr/bin/expect
set timeout -1
send_user "Log into XXX Remote Server\n"
### Prepare the variable
set ECN_USER coolguy
set XXUNIV_JUMPER_SERVER xxuniv.edu
set XLAB_JUMPER_SERVER xlab_server
send_user "\nEnter your target server: "
send_user "list your server here"
expect_user -re "(.*)\n"
set TARGET_SERVER "$expect_out(1,string)"
stty -echo
send_user "\nEnter your password: "
expect_user -re "(.*)\n"
set PASSWORD "$expect_out(1,string)"
send_user '\n'
stty echo
### Log into the jump server 1
spawn ssh -X $ECN_USER@$XXUNIV_JUMPER_SERVER
expect {
"*password:"
{send "$PASSWORD\r"}
}
### Log into the jump server 2
expect "*$ECN_USER@xxuniv*" # This check line could be deleted
send "ssh -X $ECN_USER@$XLAB_JUMPER_SERVER\r"
expect {
"*password:"
{send "$PASSWORD\r"}
}
if {! [regexp -nocase "mjis2050ln6" $TARGET_SERVER]} {
### Log into the target server
expect "*$ECN_USER@xlab*" # This check line could be deleted
send "ssh -X $ECN_USER@$TARGET_SERVER\r"
expect {
"*password:"
{send "$PASSWORD\r"}
}
}
interact