在linux機器下開發程式,經常需要從編譯伺服器A傳檔案至運作伺服器B,通過SCP指令傳輸時需要顯式手動輸入密碼,單個檔案還好,如果多個時就會發現比較繁瑣且效率低下,免密碼方式可以通過SSH密碼共享與except指令來實作,接下來講講except指令使用。
查詢安裝except指令
rpm -qa|grep expect*
如果出現查詢結果則己安裝,否則未安裝。
安裝except
http://rpmfind.net/linux/rpm2html/search.php?query=expect
編寫自動運作腳本
#!/bin/sh
pwd="123456"
/usr/bin/expect <<-EOF
spawn scp hss [email protected]:/usr/local/bin/ee
expect "*password:"
send "$pwd\r"
spawn scp ../lib/libdataengine.so [email protected]:/usr/local/lib
expect "*password:"
send "$pwd\r"
spawn scp ../lib/libtrillium.so [email protected]:/usr/local/lib
expect "*password:"
send "$pwd\r"
expect eof
EOF
如果需要傳輸多個檔案可以寫在一塊兒,非常友善。
shell中遇到<<符号時,會自動将下一個詞(這裡是EOF)當作一個分界詞,直到碰到第二個同樣分界詞時結束,且把其中的内容整體作為前面指令的輸入。
spawn是進入了except環境後的内部指令。