2
我有腳本通過SSH將一些文件複製到其他服務器。我使用tar壓縮文件到farchive上,並從其他機器上的stdout解壓縮它。預期產卵的管道輸出
set timeout -1
# user info
set port [lindex $argv 0]
set login [lindex $argv 1]
set password [lindex $argv 3]
set host [lindex $argv 2]
#tar info
set sdir [lindex $argv 4]
set ddir [lindex $argv 5]
spawn tar cf - $sdir | ssh -p $port [email protected]$host tar xf - -C $ddir
expect "*?(yes/no)" {
send "yes\r"
}
expect "*?assword" {
send "$password\r"
}
expect "#" {
send "ls $ddir -la\r"
}
expect "#" {
send "exit\r"
}
interact
但是'|'不能用產卵。我試圖找到任何解決方案,但沒有任何適合我的方式。你能給我這個問題的建議嗎?
不要指望這個。使用ssh-keygen和ssh-copy-id設置ssh密鑰 –
我沒有答案,但我有一個建議。如上所述,使用基於密鑰的身份驗證而不是基於密碼對於大多數情況來說更好。 另外,考慮使用Python來代替bash更復雜的腳本。如果可能,請使用光纖模塊,或僅使用標準庫pexpect模塊。 另外考慮使用rsync與壓縮。 對不起,我沒有你的具體問題的答案,但只有我如何解決問題的建議。 – johannestaas