Ich habe meinen Kopf dagegen stundenlang geschlagen, recherchiert und refactoring, aber ich kann es nicht zur Arbeit bringen.Python: String in String-Check schlägt fehl
import paramiko
import sys
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(
paramiko.AutoAddPolicy())
ssh.connect(switch, username='user',
password='pass')
stdin,stdout,stderr = ssh.exec_command("show interfaces descriptions")
line = stdout.readline()
while line != "":
if ("UNIT " + unit) in line:
switchPort = line [:9]
switchPort.strip()
line = stdout.readline()
print (switchPort)
command = "show vlans"
stdin,stdout,stderr = ssh.exec_command(command)
line = stdout.readline()
while line != "":
if acronym + "-s" in line or acronym + "-r" in line or ("subscribed" in line and "un" not in line and "pvlan" not in line):
line.strip(' ')
subscribedVlan = ''.join([i for i in line if i.isdigit()])
line=stdout.readline()
if switchPort in line:
portVlan = "Subscribed"
elif "un" in line and "pvlan" not in line:
unsubscribedVlan = ''.join([i for i in line if i.isdigit()])
if switchPort in line:
portVlan = "Unsubscribed"
else:
line=stdout.readline()
print ("SwitchPort: " + switchPort)
print ("line: " + line)
if switchPort in line:
portVlan = "Unsubscribed"
print ("In Unsubscribed")
else:
print("Check Failed")
Der Ausgang:
Switch: ge-0/0/3
line: ge-0/0/3,0 *, ge-0/0/47,0, ge-0/1/3.0 *
Prüfung fehlgeschlagen
der Hauptteil, dass ich Probleme mit andernfalls habe im Elif Teil. Ich hatte es mit dem If in Syntax und Logik, fast genau, außer für die anderen Instanzen. Was mich zu einer Schleife bringt, ist, dass der gedruckte switchPort zu einem Stück der Linie passt. Hat jemand eine Idee, was könnte das ausstoßen?
Ich versuchte, beide Variablen in Zeichenfolgen vor der Überprüfung zu konvertieren, und das hat nicht funktioniert.
'stdout.readline()'? –
Es gibt eine '
'in' SwitchPort', aber nicht in 'line'. – TigerhawkT3
Manchmal gibt es kleine Unterschiede zwischen Strings, die in der Konsole nicht einfach zu sehen sind. Probieren Sie 'print ('SwitchPort: {! R}'. Format (switchPort))' und 'print ('line: {! R}'. Format (line))'. Es kann den Unterschied leichter ausmachen. – smarx