用于捕获失败命令或警告消息的Python脚本

时间:2016-06-17 17:41:17

标签: python networking cisco

我有一个脚本telnet到网络交换机并执行命令。它工作正常但我需要它停止并显示错误消息,如果任何命令失败或网络给予减弱或某事。

以下是代码:

import sys
import telnetlib


HOST = "10.10.10.1"
user = "Test"
password = "TestPW"

tn = telnetlib.Telnet(HOST)

tn.read_until("username: ")
tn.write(user + "\n")
tn.read_until("password: ")
tn.write(password + "\n")

n, match, previous_text = tn.expect([r'Login incorrect', r'\$'], 1)
if n == 0:
    print "Invalid Credentials"
    tn.close()
else:
    tn.write("Term len 0\n")
    #Reads data from commands.txt file and executes it line by line
    with open("commands.txt") as commands:
        singlecommand = commands.read()
        tn.write(singlecommand)
        print singlecommand
    #Need exception/error checking to catch fail commands or warnings.
    tn.write("exit\n")
    tn.write("y\n")
    print tn.read_all()
    tn.close()

我希望脚本在失败命令或来自CLI的警告之后停止执行更多命令,这可能是错误的。它已经具有print函数,因此它应该显示错误消息和失败的命令。

以下是失败命令的示例:

  

%在'^'标记处检测到无效输入。

以下是一条示例警告消息:

  

%警告:

2 个答案:

答案 0 :(得分:0)

您可以使用http://yahoo.com语句。

它们与Python文档的Try/Except部分相关。

示例:

try:
    wrong_sum = "a" + 2
except ValueError:
    print "You got a Value Error"
else:
    break

答案 1 :(得分:0)

您可以根据失败命令中出现的关键字提取消息,然后引发异常 例如:

try:
     if '%Warning' == message[:8]:
          raise Exception('Test')
except Exception:
     print message