一不小心自己也有三台虛擬機了,每次都ssh -username@ip 然后在輸入密碼着實蛋疼,第一反應時腳本登錄,但是作為腳本是逐行執行命令,是無法做到等待一個密碼提示出現在輸入密碼的。查到mac下可以通過expect(具體是spawn,expect,send三條功能),win類似也有expect工具。感覺應該是個運維技巧。
ok,安裝expect,根據INSTALL,README,要裝expect現狀tcl(另一個包),http://www.tcl.tk/software/tcltk/download.html,tcl的話解壓出來我直接進入的unix目錄下,因為macosx下README說mac下當成unix裝也沒啥事,而且我在macosx下make不過是什么鬼。。。安裝沒什么注意的,./configure make makeinstall is enough。裝完tcl記得看下安裝的路徑,我的是在/usr/local/lib/。
之后再下載expect包,https://sourceforge.net/projects/expect/files/Expect/5.45/。這里解壓之后放到tcl一起,我的話即/usr/local/lib/,然后make時候make expect說是可以只裝expect相關組件,難道還有別的???,不管,我直接make之后install了。
然后我們就具備了expect的主要功能了。
代碼如下:
#!/usr/bin/expect -f /usr/bin/expect這個路徑安裝完expect之后 which expect可以查看 set timeout -1 set password bugaosuni spawn ssh myname@serverip expect "*assword:*" // 等待密碼提示顯示 send "$password\r" // 登錄 interact //done
然后很受傷的是這個腳本已經不能當普通sh來執行了。得用expect 命令執行。具體就是 expect myLogon.sh 。期間若是不可執行 chmod +x myLogon.sh。
OK 用戶密碼都在logon.sh里面了。