我想列出文件夹中的所有文件:
ABC123.cfg
XYZ456.cfg
EFG999.cfg
文件名,不涉及.cfg
远程服务器名称ABC123
等。
我想要将几个文件复制到每个远程服务器。
因此,查找文件名,但取不带.cfg
. 的名称,然后
scp filename.txt username@ABC123:/home/username/
对于每个远程服务器,如果存在则覆盖目标文件。
每个远程服务器都使用相同的用户名和密码。我可以在命令中使用密码吗scp
?
答案1
这应该可以完成这项工作:
#!/bin/bash
for i in *.cfg; do
sshpass -f /path/to/passwordfile scp ${i%.cfg}.txt username@${i%.cfg}:
done
更确切地说
for i in *.cfg;do sshpass -f /path/to/passwordfile scp ${i%.cfg}.txt username@${i%.cfg}:;done
密码将通过以下方式scp
传递:sshpass
如何将密码传递给 scp?) 读取它passwordfile
– 请记住使用 来保护此文件以防止未经授权的读取访问chmod 400
!
我有点困惑你想在这里发送什么文件,我知道例如有一个文件ABC123.txt
必须发送到主机ABC123
,所以我只是.cfg
使用Bash 参数扩展并补充道.txt
。
由于user@host:
默认为主user
目录,我删除了该路径。