我试图将行附加到root拥有的现有文件,我必须使用大约100台服务器执行此任务。所以我创建了servers.txt
所有的IP和ntp.txt
文件,它将包含我需要追加的行。我正在执行以下脚本,但我没有达到我想要的目标。有人可以建议需要纠正的内容吗?
!/bin/bash
servers=`cat servers.txt`;
for i in $servers;
do
cat ntp.txt | ssh root@${i} sudo sh -c "cat >>ntp.conf""
done
答案 0 :(得分:1)
以下是一些问题;不确定我找到了所有这些。
#
,这是重要而重要的。root
身份登录,则无需明确sudo
。ssh
为你运行一个shell;无需明确sh -c
您的命令。tee -a
(只需删除-a
来覆盖而不是追加)。同时将文件打印到标准输出是一种不受欢迎的效果(有些人会说tee
的主要影响而不是副作用,但是我们不去那里)所以你经常会重定向到/dev/null
以避免出现文本也溢出到你的屏幕上。cat
,只是为了避免让某人指出它没用。#!/bin/bash
while read -r server; do
do
ssh you@"$server" sudo tee -a /etc/ntp.conf <ntp.txt >/dev/null
done <servers.txt
我将代码更改为以you
身份登录,但您需要根据自己的环境进行调整。 (如果您以自己的身份登录,通常只需ssh server
而不明确指定用户名。)
根据您的评论,我还添加了目标文件/etc/ntp.conf
更严格的服务器配置方法是使用类似CFengine2的东西来管理配置。