最終的には、Exscript を使用して cisco テスト ラボ デバイスを制御するための基本的な機能をいくつか作成しようとしています。Exscript はこの時点まですべてを完璧に行ってくれました。たとえば、いくつかの関数を引っ張っているだけです。
私が問題を抱えているのは、reload コマンドを実行するこの reload_start() 関数を作成し、Cisco デバイスを再起動して、テスト実行で行った変更を元に戻すことです。文字列のさまざまな組み合わせを実行しようとしましたが、「reload」と入力するときに表示される追加のプロンプトを回避できません。
対照的に、私の 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
ヘルプやご意見をいただければ幸いです。