用于安全传输的Bash脚本

时间:2016-08-24 14:36:33

标签: bash ssh scp

这个想法很简单,我希望能够从我的系统执行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命令'

注意:这实际上是我第一次使用bash

1 个答案:

答案 0 :(得分:1)

ssh / scp中已经有一个内置功能来执行此操作。您可以从hostB的本地位置打开ssh-tunnel,而不是在一个命令中打开hostC。在scp中,您可以使用-o标志执行此操作。

scp -o ProxyCommand="ssh $hostB nc $hostC 22" $path_to_file $hostC:$path_to_file