2015-05-09 4 views
1

Я пытаюсь отключить проверку RHN при запуске yum на 1000 серверах. Это делается:SED в удаленном скрипте SUDO ssh

Редактирование этого файла /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

Обратите внимание на [edit-help] (http://stackoverflow.com/editing-help). – Cyrus

+0

Попробуйте проверить действительную команду sudo, выполненную на удаленном хосте, из файла '/ var/log/secure' или'/var/log/auth.log'. – tivn

+0

Любая причина, по которой вы не полагаетесь на программное обеспечение для управления конфигурацией? Вы можете сделать это очень легко и последовательно с [Ansible] (http://www.ansible.com/) – damienfrancois

ответ

0

Команда sudo (1) ожидает псевдотелевизора (pty) и терпит неудачу, если ее не видит. Перепишите свою командную строку, чтобы вместо нее использовать su (1). Используйте локальную конфигурацию sudo (1), чтобы ограничить доступ к этому скрипту, чтобы только сценарий выбора мог выполнять скрипт.

Смежные вопросы