Bash 安全传输脚本
Bash Script for Secure transfer
想法很简单,我希望能够从我的系统执行 scp
命令并将文件移动到另一台计算机,反之亦然。
我的案例有一个小问题。为了连接到终端计算机,我必须先 ssh 到 host_b,然后 ssh 到 host_c.
长话短说,我必须先将所有文件复制到 host_b,然后再复制到 host_c
这是示意图:
my_computer -> host_b -> host_c
因为我每次都必须手动 运行 我的代码,这有点令人沮丧,所以我认为我应该制作自己的脚本来自动执行此过程。
到目前为止,这是我的代码:
#!/usr/bin/expect -f
echo
echo "Move files from your computer to HostC!"
echo
printf 'Username for hostB: '
read -r userB
hostb_addr='hostb.com'
printf 'Username for hostC: '
read -r userC
hostc_addr='hostc.com'
printf 'File you want to move: '
read -r filepath
scp_params='-P 8140'
# connect via scp to hostB
spawn scp $scp_params $filepath $hostb_user@$hostb_addr:~/temp_transfer
interact
主要思路是从我的电脑中获取文件到hostB的一个临时文件夹,再次scp到hostC,然后从hostB中删除文件。
我已经开始尝试完成这项工作,但我得到了 'spawn command not found'
注意:这实际上是我第一次使用 bash
ssh/scp 中已经有一个内置功能可以执行此操作。您可以从您的主机 B 的本地位置打开一个 ssh 隧道,而不是在一个命令中打开一个 hostC。在 scp 中,您可以使用 -o 标志执行此操作。
scp -o ProxyCommand="ssh $hostB nc $hostC 22" $path_to_file $hostC:$path_to_file
想法很简单,我希望能够从我的系统执行 scp
命令并将文件移动到另一台计算机,反之亦然。
我的案例有一个小问题。为了连接到终端计算机,我必须先 ssh 到 host_b,然后 ssh 到 host_c.
长话短说,我必须先将所有文件复制到 host_b,然后再复制到 host_c
这是示意图:
my_computer -> host_b -> host_c
因为我每次都必须手动 运行 我的代码,这有点令人沮丧,所以我认为我应该制作自己的脚本来自动执行此过程。
到目前为止,这是我的代码:
#!/usr/bin/expect -f
echo
echo "Move files from your computer to HostC!"
echo
printf 'Username for hostB: '
read -r userB
hostb_addr='hostb.com'
printf 'Username for hostC: '
read -r userC
hostc_addr='hostc.com'
printf 'File you want to move: '
read -r filepath
scp_params='-P 8140'
# connect via scp to hostB
spawn scp $scp_params $filepath $hostb_user@$hostb_addr:~/temp_transfer
interact
主要思路是从我的电脑中获取文件到hostB的一个临时文件夹,再次scp到hostC,然后从hostB中删除文件。
我已经开始尝试完成这项工作,但我得到了 'spawn command not found'
注意:这实际上是我第一次使用 bash
ssh/scp 中已经有一个内置功能可以执行此操作。您可以从您的主机 B 的本地位置打开一个 ssh 隧道,而不是在一个命令中打开一个 hostC。在 scp 中,您可以使用 -o 标志执行此操作。
scp -o ProxyCommand="ssh $hostB nc $hostC 22" $path_to_file $hostC:$path_to_file