前不久因為進行異地copy資料,就想到了scp,但是這個東西需要手動去輸入密碼,不能放到後台去執行,於是就考慮有沒有辦法讓他自動輸入密碼呢,最終發現了expect這個東西,很強大的東西,所以我就在本地測試了下,最終實現了不用手動輸入密碼也可以進行copy資料,拿來與大家分享.
要使用expect需要預先安裝tcl這個東西,然後再安裝expect包.我這裡使用的是tcl8.4.11-src.tar.gz和expect-5.43.0.tar.gz的安裝包.
1.安裝tcl和expect
#tar zxvf tcl8.4.11-src.tar.gz
#cd tcl8.4.11/unix
#./configure && make && make install
#cp tclunixport.h ../generic/
#tar zxvf expect-5.43.0.tar.gz
#cd expect-5.43/
#./configure --with-tcl=/usr/local/lib/ --with-tclinclude=\
/home/nagios/tcl8.4.11/generic/ --with-x=no
#make && make install
ok,tcl以及expect已經安裝完成了.下面給出scp的乙個expect很簡單的乙個指令碼
#!/usr/local/bin/expect
spawn scp /home/nagios/tuning-primer.sh nagios@
192.168.100.104:
/home/nagios/
expect "password:"
exec sleep 2
send
"nagios&*(\n"
interact
就這麼乙個簡單的指令碼,就可以實現了自動輸入密碼的功能,大家對expect的了解還是需要在網上自己找些資料的,他也支援函式、條件語句、迴圈語句的,功能蠻強大的.
Expect的乙個簡單使用
最近在寫乙個自動部署環境的指令碼.發現shell在遠端scp或ssh時.都需要提示輸入密碼.嘗試建立server端的信任關係發現行不通 可能是基於安全考慮?不過,使用了另外一種方法解決了這個問題.它就是 expect 我覺得寫有互動的shell還是挺有用的.現學現賣跟大家share一下.什麼是exp...
乙個簡單的Shell指令碼
最近新學linux的shell程式設計。試著寫了乙個遍歷資源目錄的子目錄,每個資源子目錄中拷貝10個檔案到目標目標的小指令碼。沒有什麼技術含量,只是防止自己忘記。bin sh srcroot vsu data2 datasource npm fiveminute srcpath null myroo...
乙個簡單的指令碼守護程序
專案過程中,經常會有很多的指令碼,shell指令碼 php指令碼 python指令碼等,更有一些指令碼是需要常駐記憶體執行的,簡而言之就是需要while true 的模式執行。但是有的時候,乙個常駐記憶體的程序會因為某些耗時操作而夯住,不再往下繼續執行,成為了乙個殭屍程序 或者因為某個操作偶然出錯,...