我遇到了关于linux期望脚本的麻烦。 我有一台只有LAN连接的计算机A,而另一台计算机B在同一局域网中有互联网连接。我想要做的是编写一个脚本,可以通过ssh登录到计算机B并下载文件,最后使用scp将文件传输到计算机A. 以下是我的剧本。
#!/bin/expect
set url [lindex $argv 0];
spawn ssh "user@computer-B"
expect "password:"
send "passwd\n"
expect "Last login:"
send "cd tmp\n"
send "wget $url\n"
expect "saved"
send "scp * user@computer-A:~/\n"
expect {
"yes/no" { send "yes\n"; exp_continue }
"password:" { send "passwd\n" }
}
expect "100%"
send "rm *\n"
send "exit\n"
但是现在脚本会立即将文件scp到A,直到wget结束。我的脚本是否接近正确的方法?如果不是我该怎么办?非常感谢。
答案 0 :(得分:2)
您不需要expect
,并且可以使用key-based login让您的生活更轻松。
您可以使用socks proxy。
从电脑A:
ssh -D 1080 address-of-B
接着是
export SOCKS_SERVER=127.0.0.1:1080
您现在可以使用计算机A中的wget
。
从电脑A:
ssh computer-B 'wget -O - $url' >> filename_on_computer_a