列出所有文件然后使用部分文件名执行脚本

列出所有文件然后使用部分文件名执行脚本

我想列出文件夹中的所有文件:

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目录,我删除了该路径。

相关内容