0
几个小时来,我一直在抨击我的头,研究和重构,但我无法让它工作。Python:字符串中的字符串检查失败
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")
输出:
的SwitchPort:GE-0/0/3
线:GE-0/0/3.0 *,GE-0/0/47.0,GE-0/1/3.0 *
检查失败
说我有失败的问题是在ELIF部分的主要组成部分。除了其他实例外,我几乎完全匹配if语法和逻辑。什么让我回到一个循环是,switchPort打印匹配一行字符串。有没有人有任何想法可能会绊倒这个?
我试图在检查之前将两个变量转换为字符串,并没有工作。
'stdout.readline()'? –
'SwitchPort'中有'
',但''不在'线路中。 – TigerhawkT3
有时,在控制台中不容易看到的字符串之间存在细微差异。尝试'print('SwitchPort:{!r}'。format(switchPort))'和'print('line:{!r}'。format(line))''。这可能会使差异更容易被发现。 – smarx