经过python类的努力,我的代码按预期工作。
但是我在脚本的每个地方使用了以下代码:
buff = ''
while not buff.endswith('#'):
resp = self.remote_conn.recv(9999)
buff += resp
print resp
任何人都可以帮助我避免多次使用上面的代码,在下面的代码中
class Asr:
def __init__(self):
''' SSH connection Establish '''
self.hostname = hostname
self.net_username = net_username
self.net_password = net_password
def remote(self):
self.remote_conn_pre = paramiko.SSHClient()
self.remote_conn_pre.set_missing_host_key_policy(
paramiko.AutoAddPolicy())
self.remote_conn_pre.connect(self.hostname, username=self.net_username, password=self.net_password, look_for_keys=False, allow_agent=False)
self.remote_conn = self.remote_conn_pre.invoke_shell()
def disable_paging(self):
self.remote_conn.send("terminal length 0\n")
def inventory(self):
self.remote()
self.remote_conn.send("\n")
self.remote_conn.send("ping 1.1.1.1\n")
buff = ''
while not buff.endswith('#'):
resp = self.remote_conn.recv(9999)
buff += resp
print resp
self.remote_conn.send("ping 1.1.1.1\n")
buff = ''
while not buff.endswith('#'):
resp = self.remote_conn.recv(9999)
buff += resp
print resp
self.remote_conn.send("ping 1.1.1.1\n")
buff = ''
while not buff.endswith('#'):
resp = self.remote_conn.recv(9999)
buff += resp
print resp
self.remote_conn.close()
def version(self):
self.remote()
self.remote_conn.send("\n")
self.remote_conn.send("ping 1.1.1.1\n")
buff = ''
while not buff.endswith('#'):
resp = self.remote_conn.recv(9999)
buff += resp
print resp
self.disable_paging()
self.remote_conn.send("show inventory\n")
buff = ''
while not buff.endswith('#'):
resp = self.remote_conn.recv(9999)
buff += resp
print resp
self.remote_conn.close()
asr = Asr()
asr.inventory()
asr.version()
答案 0 :(得分:0)
使用与上述相同的功能 例如:
def check_buff(self, buff):
while not buff.endswith('#'):
resp = self.remote_conn.recv(9999)
buff += resp
print resp
每次调用函数并传递buff参数。 例如:
buff = ''
self.check_buff(buff)