У меня есть следующий скрипт для обновления удаленных систем.
from fabric.api import run
serverIp = "192.168.1.1"
serverPort = "8000"
filename = "MyFIle.tar.gz"
dirName = "MyDir"
def makeUpdate():
run("/bin/update.sh {0} {1} {2} {3}".format(serverIp, serverPort,
filename, dirName))
У меня есть список из нескольких сотен IP-адресов, где мне нужно делать обновления. Я делаю это, используя следующий скрипт.
import os
data = open("clients.txt").read().strip().split("\n")
for i in data:
if i:
print(i)
for i in data:
os.system("fab -H {0} -u root -I host_type".format(i))
Когда ключ ssh настроен, все работает нормально, но мне нужно развернуть его на машинах, где ключ ssh не должен быть настроен. В этом случае он запрашивает пароль каждый раз, когда устанавливает новое соединение ssh. Пароль для всех устройств одинаков. Вводить пароль несколько сотен раз не удобно.
Когда я передал пароль из командной строки, это не сработало.
По какой-то причине я должен войти в систему как root, поэтому пароль sudo в этом случае не работает; то, что я думаю, происходит.
Есть ли способ автоматизировать это или передать пароль в аргументе команде fab?
заранее спасибо.