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