2015-05-09 82 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)配置來限制對此腳本的訪問,以便只有少數人可以執行腳本。