Bash脚本用于安全传输

4

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

主要思路是将文件从我的电脑传输到临时文件夹以托管B,再次使用scp将它们传输到主机C,然后从主机B中删除这些文件。

我已经开始尝试让它工作,但是我遇到了“spawn command not found”的问题。

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


@shellter 不行,因为安全原因... 除非你是公司网络的硬连线,否则你应该按照我告诉你的方式操作。所以在家工作有点棘手。 - Pavlos Panteliadis
1个回答

1

在ssh / scp中已经有一个内置功能可以实现这一点。您可以通过一个命令从本地位置打开ssh隧道到您的hostB,然后到hostC。在scp中,您可以使用-o标志来实现此操作。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接