用于替换所列系统中某个文件的 Bash 脚本

用于替换所列系统中某个文件的 Bash 脚本

我想创建一个脚本来代替在 下列出的 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

相关内容