Привет!
Только знакомлюсь с python, и в рамках рабочего процесса поставили задачу — написать скрипт, который поможет сменить пароль определенной учетки на 20 серверах без sudo.
Решил использовать paramiko.
Вот то, что я смог написать при помощи интернета:
import paramiko
COMMAND = passwd
USER = TEST_ENVIRONMENT
OLD_PASS = (‘PASSWORD’)
NEW_PASS = (‘NEW PASSWORD’)
DEVICES_IP = [192.168.100.1,192.168.100.2,192.168.100.3,192.168.100.4]
for IP in DEVICES_IP:
print(‘Connection to device {}, format( IP ))
client= paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=IP, username=USER, password=PASSWORD,
look_for_keys=False, allow_agent=False)
with client.invoke_shell() as ssh:
ssh.send(COMMAND + ‘\n’)
time.sleep(1)
ssh.send(OLD_PASS + ‘\n’)
time.sleep(1)
ssh.send(NEW_PASS + ‘\n’)
time.sleep(1)
ssh.send(NEW_PASS + ‘\n’)
time.sleep(3)
print('PASSWORD CHANGED ON ALL DEVICES_IP')
Возможности проверить работоспособность скрипта на текущий момент нет. но, сразу возникают вопросы:
Оператор for будет работать до тех пор, пока не закончится список DEVICES_IP? Мне нужно, что бы он подключался по очереди ко всем хостам, указанным в параметре DEVICES_IP, и после перебора всех хостов выводил надпись — PASSWORD CHANGED ON ALL DEVICES_IP.
Если я глупый (тупой) — не ругайте сильно, пожалуйста ;)
Объясните, как правильно написать всю эту приблуду.
Спасибо!