Задать вопрос
@evgeh4ik

Как правильно написать скрипт смены пароля на Python?

Привет!

Только знакомлюсь с 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.

Если я глупый (тупой) — не ругайте сильно, пожалуйста ;)
Объясните, как правильно написать всю эту приблуду.
Спасибо!
  • Вопрос задан
  • 741 просмотр
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
moonz
@moonz
web developer | seo | design
В коде нарушена индентация (отступы)

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')


Конструкция else: работает только с предусловием if, у вас его нет, по этому данный код вообще работать не будет)

p.s логику самого кода не проверял, думаю тут подскажут как реализовать проще)
Ответ написан
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Какие проблемы, поставьте себе виртуалку, и проверяйте сколько влезет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
18 дек. 2024, в 12:39
1000 руб./за проект
18 дек. 2024, в 12:37
10000 руб./за проект
18 дек. 2024, в 12:22
5000 руб./за проект