cat login.expect
#!/usr/bin/expect
# expect 接受命令通過這種方式傳進來
set HOSTNAME [lindex $argv 0]
set USERNAME [lindex $argv 1]
set PASSWORD [lindex $argv 2]
set CMD [lindex $argv 3]
#設置永不超時
set timeout -1
#具體的命令內容
spawn ssh $USERNAME@$HOSTNAME
# 根據上一步命令返回的內容進行匹配
expect {
#如果是yes/no 就直接輸入yes並換行繼續
"yes/no" { send "yes\r"; exp_continue}
"Permission denied," { exit }
"password:" { send "$PASSWORD\r" ; exp_continue}
" ~]"
}
send "$CMD\r"
expect {
"sudo] password for" { send "$PASSWORD\r"; exp_continue}
" ~]"
}
send "exit\r"
expect eof
exit
expect login.expect 192.168.2.10 root root@123 "sudo sh -c \"echo user1 ALL=\(ALL\) NOPASSWD: ALL >> /etc/sudoers\""