我已经潜伏了一段时间,几乎从这个网站学到了我所知道的一切。然而,我遇到了一个问题,我还没有找到一个解决办法。我试图SSH到思科设备和拉信息。我正在运行“sho interface status”,它将给出以下输出:
Port Name Status Vlan Duplex Speed Type
Fa0 connected 1 a-full a-100 10/100BaseTX
Fa1 notconnect 1 auto auto 10/100BaseTX
Fa2 connected 1 a-full a-100 10/100BaseTX
Fa3 notconnect 313 auto auto 10/100BaseTX
Fa4 notconnect 1 auto auto 10/100BaseTX
Fa5 notconnect 1 auto auto 10/100BaseTX
Fa6 connected 1 a-full a-100 10/100BaseTX
Fa7 connected 1 a-full a-100 10/100BaseTX"
我正在计算有多少行包含文本“notconnect”。我尝试了很多不同的方法,要么得到235,要么得到0。下面是一个当我得到奇怪的数字时我正在尝试的例子:
stdin, stdout, stderr = dssh.exec_command('show interface status')
response1 = stdout.read()
if 'notconnect' in response1:
EMPTY_PORT = 0
for line in response1:
if line.strip() and line[0]!='connected':
这是我在得到0的响应时尝试的:
stdin, stdout, stderr = dssh.exec_command('sho int status')
response = stdout.read()
if 'notconnect' in response:
data = stdout.read()
count = data.count('not')
EMPTY_PORT = count
for line in response:
count = count + line.count("not")
我真的希望你们能帮助我朝着正确的方向前进。我已经花了将近6个小时在同一段剧本上。我知道我错过了一些东西。你知道吗
我唯一能想到的是空的端口是我用来捕获计数的。你知道吗
这就是我如何处理计数部分:
输出:
^{} 只是一个模块,它允许您包装一个字符串,使它的行为与file object类似于打开的文件或网络响应:您可以从中
read()
遍历它,等等这样就可以用样本数据测试
count_notconnected
函数,并且只要在它工作后向它输入一个真正的response
。你知道吗您的尝试不起作用,因为在这两种情况下,您都会将响应中的所有数据一次
read()
转换为一个字符串,然后通过执行for line in response1:
-line
逐字符遍历该字符串实际上是一个字符。你知道吗所以:
迭代file object将在换行边界处为您拆分它,并允许您迭代行。
但是,对字符串进行迭代,即使它包含换行符,也会对字符串的字符进行迭代。
相关问题 更多 >
编程相关推荐