Как запустить произвольную команду sudo Fabric без ввода пароля?

С Fabric, согласно этой документации. , вы можете запустить произвольную команду оболочки, не имея fabfile, например:

fab -H host1,host2 -- echo 'hello, world!'

Вы также можете запускать команды sudo таким же образом, но вам будет предложено ввести пароль sudo для каждого хоста в списке.

Есть ли способ избежать необходимости вводить пароль sudo для каждого хоста, если функция Fabric sudo() работает?


person Neil    schedule 08.11.2012    source источник
comment
Оригинальный постер, кажется, спрашивает, как я могу сделать следующее, не запрашивая пароль sudo для каждого хоста: fab -H host0,host1,host2 -- sudo /root/bin/my_script_that_must_be_run_as_root.sh. Я знаю, как написать fabfile для этого, но я также хотел бы знать, как это сделать в виде дополнительной команды. Параметр -I в данном случае не работает. Я тестирую с помощью Fabric 1.6.0.   -  person Carl    schedule 03.07.2014


Ответы (3)


просто добавьте следующую строку в etc/sudoers, где myusername должен быть предполагаемым пользователем, который будет запускать sudo. Вы должны понимать последствия для безопасности следующих действий. Вы также можете ограничить параметры ниже, чтобы ограничить команды, которые пользователь может использовать sudo без пароля.

myusername    ALL=(ALL) NOPASSWD: ALL
person Marwan Alsabbagh    schedule 08.11.2012

Вы можете установить env.password, чтобы ткань творила чудеса, или...

...вы также можете использовать пароли для нескольких машин:

from fabric import env
env.hosts = ['user1@host1:port1', '[email protected]']
env.passwords = {'user1@host1:port1': 'password1', '[email protected]': 'password2'}

См. этот ответ: https://stackoverflow.com/a/5568219/552671

person Dave Halter    schedule 28.09.2013