Ich mache ssh zu einem Server mit Parmiko in Python. Von dort muss ich zu mehreren Geräten telnet und die Ausgabe erfassen. Ich bin in der Lage, SSH und dann telnet zu nur einem Gerät, aber nicht telnet mehrere Geräte aus einer Schleife. Bitte schlage mir vor, wie es geht. Ich bin mit den folgendenTelnet über SSH vom Server
import paramiko
import telnetlib
ip = ''
port = 42705
username = ''
password = ''
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,port,username,password)
f=open("abc.txt", "r")
x=f.readlines()
i=1
if i < 100:
print i
cmd = "telnet " + x[i]
print cmd
i=i+1
stdin, stdout, stderr = ssh.exec_command(cmd)
stdin.write('''
terminal length 0
show platform
exit
''')
outlines = stdout.readlines()
resp = ''.join(outlines)
print(resp)
, wenn ich nicht if-Anweisung verwenden und ip direkt zu geben, seine Arbeit gut. Aber ich muss mehrere Geräte vom selben Server telnet. Danke für deine Antwort!
ich jetzt den folgenden Code verwenden:
#! /usr/bin/python
import sys
import paramiko
ip=''
port=42705
username=''
password=''
f1=open("abc.txt", 'r')
devices=f1.readlines()
for device in devices:
device = device.rstrip()
print device
command = "telnet " + device
ssh = paramiko.SSHClient()
print command
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip, port, username, password)
stdin, stdout, stderr = ssh.exec_command(command)
stdin.write('''
primenms
primenms123
terminal length 0
show platform
exit
ls
''')
outlines = stdout.readlines()
resp = ''.join(outlines)
print(resp)
ssh.close()
f1.close()
Es ist in der Lage zu ssh, aber wenn ich telnet von SSH-Server mache, seine Anmeldeinformationen primenms und primenms123 Eingabe als Benutzername und Passwort, das sind die korrekten Anmeldeinformationen, aber es ist als Autorisierung fehlgeschlagen. Wo gehe ich falsch? Bitte hilf mir Jungs!
Auch 'ssh.exec_command (cmd)', et al, sollte innerhalb der Schleife ändern. –
"abc.txt" enthält nur die Liste der IP-Adressen, die ich aus dem ssh-Server telnet möchte. Wenn ich ssh.exec_command (cmd) innerhalb der Schleife verwende, zeigt das Programm mir Autorisierung fehlgeschlagen, obwohl ich die richtigen Anmeldeinformationen eingeben. – alisha
Wie verwenden Sie den Telnet-Befehl, wenn Sie nicht in Ihrer Schleife sind? Wenn es nur durch die print-Anweisung ist, würde ich sagen, benutze das einfach. –