expect 是個不錯的命令,能夠完成一系列的自動化命令操做。對每次ssh登陸輸入密碼這麼麻煩的時候使用深有體會。多數固定的命令執行,也能夠經過expect來操做執行,很是的方便。nginx
以下例子,咱們經過expect來完成一系列的操做有讀取實時日誌bash
#!/usr/bin/expect spawn ssh troot@127.0.0.1 set timeout 30 expect "password" send "123456" send "\n" set timeout 5 expect 「:~>」 send "sudo su -" send "\n" expect "~ #" send "tail -200f /var/log/nginx/access.log" send "\n" interact
spawn是進入expect環境後才能夠執行的expect內部命令,那麼首先肯定環境安裝了expect。ssh
expect個人理解有點相似if 的判斷spa
send 是執行到某一步要輸入的鍵位日誌
interact 保證登陸不退出,沒有的話執行完成即退出code
對於執行可能產生的延遲部分我用timeout來延遲執行命令自動化
#!/bin/bash /usr/bin/expect<<-EOF spawn xxxx set timeout 10 expect "password" interact expect eof EOF ps -ef |grep xxx