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