Scp
從送出後執行時,期望 scp 目錄不起作用
我正在嘗試在 svn 上實現一個送出後掛鉤,它將在每次送出後將一些文件從 svn 機器 scp 到其他一些備份機器。我用期望編寫了腳本如下
spawn /usr/bin/scp -r $l_dir $r_usr@$r_host:/$r_dir expect { timeout { send_user "Timeout"; exit 1 } eof { send_user "\nConnect failed for $r_host at \n"; exit 1 } -re ".*es..o.*" { send_user "sending yes\n" exp_send "yes\r" exp_continue } -re ".*sword.*" { send_user "sending password\n" exp_send "$r_pwd\r" } } interact
該腳本從送出後(bash 腳本)呼叫,並提供了所有必需的變數。
問題是當我執行送出後掛鉤時
./post-commit
那麼scp就成功了。但是當它被實際送出觸發時,登錄和提供密碼是成功的,但文件沒有被複製
帶有調試輸出的腳本顯示(從送出觸發器執行時)
sending password send: sending "vashishth\r" to { exp3 } interact: received eof from spawn_id exp0
使用 RSA 密鑰是不可能的,所以我必須使用帶有密碼的 scp。任何幫助將不勝感激。
發現一些Google這樣的情況下執行從 cron 等的期望不能與互動一起工作所以我替換了
interact
和
expect eof exit
並且 scp 是成功的