2017-06-03 15 views
-3

Pythonクラスの多くの努力の後、私のコードは期待通りに動作します。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() 
+2

umm ..関数を作成しますか? – Pythonista

+0

make関数が動作していないと何らかの理由で私が知りません。パラミコが切断されているということです。パラミコレベルで何が起こっているのかを試してみましょう – kitty

+0

追加の励ましと理論的根拠については、https://stackoverflow.com/questions/26785952/python-argparse-as-a-function/26786146#26786146を参照してください。 –

答えて

0

使用してAを 例:上記と同じ機能:

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) 
関連する問題