如何通过linuxexpect下载文件?
How to download file through linux expect?
我遇到了关于 linux expect 脚本的麻烦。
我有一台只有 LAN 连接的计算机 A,而同一 LAN 中的另一台计算机 B 有 Internet 连接。我想做的是编写一个脚本,它可以通过 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完成。我的脚本是否接近正确的方法?如果不是我该怎么办?非常感谢。
您不需要 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
我遇到了关于 linux expect 脚本的麻烦。 我有一台只有 LAN 连接的计算机 A,而同一 LAN 中的另一台计算机 B 有 Internet 连接。我想做的是编写一个脚本,它可以通过 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完成。我的脚本是否接近正确的方法?如果不是我该怎么办?非常感谢。
您不需要 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