【问题标题】:Exscript control cisco execute 'reload' commandExscript 控制 cisco 执行 'reload' 命令
【发布时间】:2013-09-06 23:03:05
【问题描述】:

我最终尝试创建一些基本功能来使用 Exscript 控制我的 cisco 测试实验室设备。到目前为止,Exscript 已经为我完美地完成了所有工作,例如,我只是提取了一些功能。

我遇到的问题是创建执行 reload 命令的 reload_start() 函数,重新启动我的 Cisco 设备并恢复我在测试运行中所做的任何更改。我尝试了数十种不同的字符串组合来执行,但无法解决键入“重新加载”时出现的其他提示

相比之下,我的 copy_to_running_config() 函数工作得很好,只需在字符串末尾添加 '\n'。

我还没有进入 Exscript 的提示函数(get_prompt()、expect_prompt()、waitfor() 等),我猜这是我需要探索的途径,但我找不到这样的例子处理我的具体目标。

from Exscript import Account
from Exscript.protocols import Telnet
from Exscript.protocols.drivers import ios

def __init__(self, ip):

    self.ip = ip
    self.account = Account('admin', 'key')              
    self.conn = Telnet()        
    self.conn.set_driver('ios')     
    self.conn.connect(ip)
    self.conn.login(self.account) 
    self.conn.execute('terminal length 0')

def enable(self):
    self.conn.execute('enable')

def copy_to_running_config(self, config):
    self.enable()
    self.conn.execute('copy flash:{0} running-config  \n'.format(config))
    res = self.conn.response
    self.conn.execute('exit')
    return res

def reload_start(self):
    self.enable()
    self.conn.execute('reload \n no \n')
    print self.conn.response

任何帮助或意见将不胜感激!

【问题讨论】:

    标签: python cisco-ios


    【解决方案1】:

    您的函数 reload_start 应如下所示:

    def reload_start(self):
        self.enable()
        self.conn.set_prompt(r'Save\? \[yes/no\]\:')
        self.conn.execute('reload')
        self.conn.set_prompt(r'Proceed with reload\? \[confirm\]')
        self.conn.execute('no')
        self.conn.set_prompt()
        self.conn.execute('confirm')
        print self.conn.response
    

    您必须在执行命令之前为提示设置正则表达式。否则 Exscrpt 无法确定何时发送下一条命令。

    尽管如此,如果配置没有改变并且路由器没有要求您保存,上面的脚本将无法运行,因为它会等待保存问题。

    【讨论】:

    • 感谢您的回复,我唯一需要更改的是最后一次执行 self.conn.execute('\n'),除此之外您的回答效果很好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    相关资源
    最近更新 更多