Python - изменить пароль для пользователя в JunOS
Мне нужна помощь с этим проектом, и у меня есть проблемы.
Я могу вносить изменения в этот маршрутизатор Juniper без проблем. Проблема возникает, когда мне нужно сменить пароль для пользователя.
По экрану или выводу ниже... Я попытался: пользователь отправляет команду на изменение пароля. Затем предполагается получить запрос с новым паролем от CLI, который я пытаюсь ввести, используя строку passwd1 и 2, которую необходимо отправить ниже. Я даже пытался скрыть вывод с помощью getpass(), но ничего... он бездействует, так как не может ввести пароль, затем пропускается и идет к ожидаемому:
2 ответа
Есть еще один способ реализации этого:
from passlib.hash import md5_crypt
from getpass import getpass
user = getpass()
p1 = getpass()
hashpwd = md5_crypt.encrypt(p1)
commands = 'set system login user '+user+' class read-only authentication encrypted-password '+hashpwd
print (commands)
Выход:
Password:
Password:
set system login user Vijay class read-only authentication encrypted-password $1$siC6W8.B$8FeEjf/Nt7shR1e8Axl.v1
Для работы с устройствами Junos с использованием Python я бы порекомендовал вам использовать PyEZ - https://github.com/Juniper/py-junos-eznc
Пример:
from jnpr.junos import Device
from lxml import etree
dev = Device('hostname', user='username', password='Password123')
dev.open()
cnf = dev.rpc.get_config() # similar to 'show configuration | no-more' on cli
print (etree.tounicode(cnf))
dev.close()
Решение этой проблемы заключается в установке подсказки интерактивного клиента. Например, если вы знаете, что ожидаете неподдерживаемое приглашение "интерактивное приглашение", например "=", то вам нужно сообщить python, что вы ожидаете, что... отправьте команду и сбросьте приглашение.
Пример:
def JunOS(self,host_ips,config,commit):
try:
conn = SSH2(verify_fingerprint = False)
conn.connect(host_ips)
print "Connecting to : ", host_ips
conn.login(account)
print "**********************"
conn.execute(config)
print conn.response
conn.set_prompt(r'.$')
conn.execute('set system login user admin authen plain')
conn.execute(psswd)
conn.set_prompt()
conn.execute(psswd)
conn.execute(commit)
print conn.response
time.sleep(3)
print "********************************"
print "Password Updated !"
print "********************************"
except:
print "IP for this device : ", host_ips
print "Unable to connect or Username/password are incorrect"
print "**********************"
time.sleep(2)