我需要使用 shell 脚本为两个不同的服务器复制文件。我尝试使用 Scp 用户名、IP 地址和文件夹的目标路径
答案1
如上所述这里你可以写一个小shell脚本:
for dest in $(<destinations.txt); do
scp /path/to/the/file_to_copy.txt ${dest}:/remote/path/
done
您只需创建destinations.txt
要填写的文件在每一行目的地user@host
,如下所示:
[email protected]
[email protected]
请注意,目标路径 ( /remote/path/
) 是硬编码在脚本中的,这意味着该路径必须存在于两台服务器中。如果您希望为每个目的地设置专用路径,您可以编辑脚本,删除:/remote/path/
并为 中的每个条目设置它destinations.txt
。
否则你可以看看并行-scp
答案2
通过使用 RSA,您可以编写一个脚本来发送文件,而不会提示您输入密码,您的密码不必输入到脚本中。在您的计算机上运行:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
ssh-copy-id loginname@server1Ip
ssh-copy-id loginname@server2Ip
在你的脚本中:
scp file loginname@server1IP
scp file loginname@server2IP
如果您的登录名和本地用户名相同,您可以省略 loginname@ 部分