列出所有文件,然后使用部分文件名执行脚本
我想列出文件夹中的所有文件:
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
的主目录,我删除了路径。