Expect 自動化交互命令

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\""

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章