2016-04-26 11 views
0

Ich brauche Hilfe bei diesem Projekt und Probleme im Haben.Python - Passwort ändern für Benutzer in JunOS

Ich kann Änderungen an diesem Wacholderrouter ohne Probleme vornehmen. Das Problem tritt auf, wenn ich das Passwort für einen Benutzer ändern muss.

Pro Bildschirm oder die Ausgabe unter ... Ich habe versucht: Benutzer sendet den Befehl, um das Passwort zu ändern. Dann soll es mit dem neuen Passwort von der CLI, die ich versuche, es einzugeben, mit der passwd1- und der 2-Zeichen-Zeichenfolge, die gesendet werden soll, unten aufgefordert werden. Ich versuchte sogar, die Ausgabe mit getpass zu versteckt(), aber nichts .. es leerläuft dann da nicht in der Lage ist, das Passwort einzugeben, dann wird es übersprungen und geht an die erwarten:

screenshot

Antwort

-1

Es ist eine andere Art von implimenting es:

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) 

Ausgang:

Password: 
Password: 
set system login user Vijay class read-only authentication encrypted-password $1$siC6W8.B$8FeEjf/Nt7shR1e8Axl.v1 

Für Junos Geräte Umgang mit python, würde ich Ihnen empfehlen PyEZ zu verwenden - https://github.com/Juniper/py-junos-eznc

Beispiel:

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() 
0

Die Lösung für dieses ist die Aufforderung des interaktiven cli einzustellen. Zum Beispiel Wenn Sie wissen, dass Sie eine nicht unterstützte Eingabeaufforderung "interaktive Eingabeaufforderung" zum Beispiel "=" erwarten - dann müssen Sie python mitteilen, dass Sie dies erwarten ... senden Sie Ihren Befehl und setzen Sie die Eingabeaufforderung zurück.

Beispiel:

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)