場景
需要實現執行一個命令,並自動輸入密碼。
實現
通過expect命令實現
spawn 交互程序開始后面跟命令或者指定程序
expect 獲取匹配信息匹配成功則執行expect后面的程序動作(當出現expect后面的字符串時,就執行后續的命令)
send exp_send 用於發送指定的字符串信息
exp_continue 在expect中多次匹配就需要用到
send_user 用來打印輸出 相當於shell中的echo
exit 退出expect腳本
eof expect執行結束 退出
set 定義變量
puts 輸出變量
set timeout 設置超時時間
實例
執行kerberos認證命令kinit,並自動輸入密碼
kerberos_kinit.sh
#!/usr/bin/expect spawn kinit # 執行認證命令 expect "Password*" # 當出現Password的時候,就執行輸入密碼操作 send "123456\n" # 輸入密碼 send_user "\nSuccessful,Kerberos certification has been reset!" # 打印提示信息 expect eof # 退出
賦權
chmod 777 kerberos_kinit.sh
調用
./kerberos_kinit.sh
或者
expect kerberos_kinit.sh
執行結果