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

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

ABC123.cfg XYZ456.cfg EFG999.cfg 

没有.cfg的文件名与远程服务器名称, ABC123等有关。

我想将几个文件复制到每个远程服务器。

因此,查找文件名,但不带.cfg的名称。 然后

 scp filename.txt username@ABC123:/home/username/ 

对于每个远程服务器,如果存在,则覆盖目标文件。

每个远程服务器使用相同的用户名和密码。 我可以在scp命令中使用密码吗?

这应该做的工作:

 #!/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 

使用sshpass将密码传递给scp ( 如何将密码传递给scp? )从passwordfile文件中读取passwordfile – 请记住使用chmod 400保护此文件免受未经授权的读取访问!

我有点困惑你想要发送到哪个文件,我知道有一个文件ABC123.txt必须发送到主机ABC123 ,所以我只是使用Bash参数扩展剥离了.cfg并添加了.txt

作为user@host:默认为user的主目录,我删除了路径。