前几天写了一段代码,是用来检查思科设备的端口运行状态的,只是中间有些bug或是存在安全问题,比如密码写在脚本里,对网络不可以达的设备没有进行判断并加以跳过。以下对前两天写的代码进行修改。
#!/usr/bin/python from netmiko import ConnectHandlerfrom netmiko.ssh_exception import NetMikoTimeoutExceptionimport timeimport sysimport getpassclass CiscoNetwork(): def __init__(self,username,password): self.username = username self.password = password def CiscoDevice(self,iplist): self.device={'device_type':'cisco_ios', 'username':self.username, 'password':self.password, 'ip':iplist } print('-'*100) print "[+]connect to network device... %s" %(iplist) self.connect = ConnectHandler(**self.device) self.connect.enable() def gethostname(self): self.hostname = self.connect.find_prompt() self.hostname = self.hostname.replace("#","") print self.hostname def show(self,cmd): self.output = self.connect.send_command(cmd) for self.line in self.output.split('\n'): if 'line protocol is up' in self.line: print (self.line) def close(self): if self.connect is not None: self.connect.disconnect() self.connect = None if __name__ == '__main__': print "[+] This Program is beging done......." username = raw_input('Username:') password = getpass.getpass() for iplist in open("/opt/other/ip.txt"): try: switch = CiscoNetwork(username,password) switch.CiscoDevice(iplist) switch.gethostname() switch.show('show int') switch.close() except (EOFError, NetMikoTimeoutException): print ('Can not connect to Device')