Mon objectif est de me connecter à un périphérique réseau via un serveur proxy/terminal. Lorsque je me connecte à l'aide de Putty, j'entre :
Nom d'utilisateur :ttyS 1 @ nom du terminal
où Nom d'utilisateur est le nom de l'utilisateur, le numéro après :ttyS est le numéro de port auquel nous voulons nous connecter, et nom du terminal est le nom du serveur proxy. J'ai essayé le code que j'ai obtenu à partir de ces deux liens Lien1 y Lien2
from netmiko import ConnectHandler
import time
from netmiko import redispatch
jumpserver = {'device_type': 'terminal_server','ip': 'x.x.x.x','username': 'name','password': 'pass','global_delay_factor':5}
net_connect = ConnectHandler(**jumpserver)
print net_connect.find_prompt()
net_connect.write_channel('command to access router')
time.sleep(1)
net_connect.read_channel()
redispatch(net_connect, device_type='arista_eos')
net_connect.send_command('show hostname')
Lorsque j'exécute le script, il est déjà sur le serveur de terminal et ne peut plus se connecter au périphérique réseau.
Quelqu'un peut-il me suggérer comment se connecter à un périphérique réseau via un serveur proxy/terminal comme le fait PUTTY et obtenir le nom d'hôte du périphérique.
J'ai reçu le code ci-dessous de l'un de mes collègues. Je peux maintenant accéder à l'appareil connecté sur un port particulier mais je ne parviens pas à me connecter. Lorsque j'entre le nom d'utilisateur à l'invite de connexion, il me demande l'ancien mot de passe, puis à nouveau le mot de passe. Je ne comprends pas pourquoi cela se produit car je peux me connecter en utilisant le même compte et le même mot de passe avec succès en utilisant Putty. Ce n'est qu'avec le script Python script qu'il demande l'ancien mot de passe, puis le mot de passe indéfiniment. Voici le code :
import time
from netmiko import ConnectHandler, redispatch
zpe_username = "serviceaccount"
zpe_password = "xxxxxxx"
zpe_hostname = "TerminalServerName"
console_username = zpe_username + ":ttyS" + "1"
console_server = {
"host": zpe_hostname,
"username": console_username,
"password": zpe_password,
"device_type": "terminal_server",
}
print("ssh " + console_username + "@" + zpe_hostname)
net_connect = ConnectHandler(**console_server)
net_connect.write_channel(zpe_username + "\n")
time.sleep(1)
password_prompt = net_connect.read_channel()
net_connect.write_channel(zpe_password + "\n")
time.sleep(1)
redispatch(net_connect, device_type='arista_eos')
device_type = net_connect.device_type
device_prompt = net_connect.base_prompt
print(device_type, device_prompt)