![用于替换所列系统中某个文件的 Bash 脚本](https://linux22.com/image/1593752/%E7%94%A8%E4%BA%8E%E6%9B%BF%E6%8D%A2%E6%89%80%E5%88%97%E7%B3%BB%E7%BB%9F%E4%B8%AD%E6%9F%90%E4%B8%AA%E6%96%87%E4%BB%B6%E7%9A%84%20Bash%20%E8%84%9A%E6%9C%AC.png)
我想创建一个脚本来代替在 下列出的 CentOS 系统中的一个文件/usr/bin
。
例如:我需要复制和替换从一个中心位置到多个系统的一个文件(使用 root 登录)。
小路 :/storage1/data/client /usr/bin/
有人能帮忙吗?
我的清单样本,
10.20.1.2
10.20.1.3
10.20.1.4
答案1
scp
在循环中使用怎么样for
?
for server in user1@server1 user2@server2 user3@server3
do
scp /storage1/data/client "$server":/usr/bin/
done
如果服务器已经在数组中,您可以使用:
#!/bin/bash
for server in "${servers[@]}"
do
scp /storage1/data/client "$server":/usr/bin/
done
如果在一个文件中(每行单个服务器),你可以写入:
while IFS= read -r server
do
scp /storage1/data/client "$server":/usr/bin/
done < serverfile
当然,root
如果您想连接该用户,您可以手动添加该用户(这也会删除前导和尾随的空格),如下所示:
while read server
do
scp /storage1/data/client root@"$server":/usr/bin/
done < serverfile
如果服务器数量太大,您可以同时进行复制,如下所示:
for server in user1@server1 user2@server2 user3@server3
do
scp /storage1/data/client "$server":/usr/bin/ &
done
wait