2015-05-09 81 views
1

我试图在1000台服务器上运行yum时禁用RHN检查。远程SUDO ssh脚本中的SED

编辑这个文件/etc/yum/pluginconf.d/rhnplugin.conf

[main] 
enabled = 0 

我写了一个脚本来远程做到这一点:它是由完成。我们使用的个人账户,我需要执行使用sudo命令:

for HOST in $(cat serverlist) ; do echo $HOST; ssh -o ConnectTimeout=5 -oStrictHostKeyChecking=no $HOST -t 'sudo cp /etc/yum/pluginconf.d/rhnplugin.conf /etc/yum/pluginconf.d/rhnplugin.$(date +%F) ; sudo sed -i -e "s/1/0/g" /etc/yum/pluginconf.d/rhnplugin.conf ' ; done 

我知道这是一个长期的线,但它为什么不工作?

所有各个命令上运行自己的

sudo cp /etc/yum/pluginconf.d/rhnplugin.conf /etc/yum/pluginconf.d/rhnplugin.$(date +%F) 

sudo sed -i -e "s/1/0/g" /etc/yum/pluginconf.d/rhnplugin.conf 

试图逃避特殊字符:

sudo sed -i -e "s\/1\/0\/g" /etc/yum/pluginconf.d/rhnplugin.conf 

但我得到一个错误的所有时间:

sed: -e expression #1, char 1: unknown command: `?' 

感谢你的帮助。

+0

请查看[editing-help](http://stackoverflow.com/editing-help)。 – Cyrus

+0

尝试从'/ var/log/secure'或'/ var/log/auth.log'文件检查在远程主机上执行的sudo命令。 – tivn

+0

为何不依赖配置管理软件的任何原因?你可以非常容易地和[Ansible](http://www.ansible.com/) – damienfrancois

回答

0

sudo(1)命令需要一个伪电传(pty),如果它没有看到一个,它会失败。重写你的命令行来代替使用su(1)。使用本地sudo(1)配置来限制对此脚本的访问,以便只有少数人可以执行脚本。