网络设备批量操作

网友投稿 783 2022-08-31

网络设备批量操作

网络设备批量操作

近期频繁登录设备进行封堵ip地址。经常给一个ip地址进行登录并重复那几个命令,然后就简单写了一个执行脚本,如下

#!/usr/bin/env python#vers:1.0#auth:chier11#date:202207import reimport paramikoimport datetime,timedef MySSH(cmds_list): ip="172.16.0.1" port=22 user='username' passwd='password' result=[] try: sshcon = paramiko.SSHClient() sshcon.set_missing_host_key_policy(paramiko.AutoAddPolicy()) sshcon.connect(ip,port,user,passwd, compress=True) conn = sshcon.invoke_shell() #print (" MySSH >>>>>>",cmds_list) for cmd in cmds_list: if cmd: conn.send(cmd) time.sleep(2) #cease 2s result.append(conn.recv(9999).decode(encoding='utf-8', errors='ignore')) #transfer to string type #print ("result",result,type(result)) sshcon.close() return result except: passdef FileToList(filename): #input filename,return list: with open(filename,"r") as filetemp: addrlist=filetemp.read().splitlines() ##no "\n",return list,but have space。 print (" FileToList >>>>>>",addrlist) return addrlistdef select_addr_cmd(addr_list): #input ip address_list TO "select command of the device" select_cmds_list=[] select_cmds_list.append(" \n") ##difference of list_index for x in addr_list: if x: sip=x.strip() ##delete the space left&right scmd=('disp cur | inc {} \n'.format(sip)) ##select command foramt:disp cur | inc 1.1.1.1 select_cmds_list.append(scmd) return select_cmds_listdef deny_addr_cmd(addr_list): #input ip address_list TO "deny command of address-set in security-policy" addr_set='addr_20220725' #custom after the security-police. #first,use in static ,address-set name :addr_20220725 deny_cmds_list=[] deny_cmds_list.append(' \n') deny_cmds_list.append('system-view \n') in_addrset=('ip address-set {} type object \n'.format(addr_set)) #deny command format:ip address-set addr_20220725 type object deny_cmds_list.append(in_addrset) for x in addr_list: if x: sip=x.strip() ##delete the space left&right scmd=('address {} mask 32 description {} \n'.format(sip,addr_set)) ##deny_ip command foramt:address 1.1.1.1 mask 32 description addr_20220725 deny_cmds_list.append(scmd) deny_cmds_list.append('quit \n') deny_cmds_list.append('quit \n') deny_cmds_list.append('quit \n') #print(" Deny_cmds_list >>>>>>",deny_cmds_list) return deny_cmds_listif __name__ == "__main__": ip_list=FileToList('address_set_deny.txt') #须有个接受ip地址的文件 #transfer to fortmat of command from list,and exec deny_cmds_list=deny_addr_cmd(ip_list) MySSH(deny_cmds_list) #select command and show results. select_cmds_list = select_addr_cmd(ip_list) select_res = MySSH(select_cmds_list) for i, val in enumerate(select_res,0): #sec element start print (' '+'*'*50) print ("执行序号:%s 返回结果:%s" % (i + 1, val)) time.sleep(60)运行前需要有个存放封堵ip地址的文件"address_set_deny.txt",每行一个地址。

以上模块可以自由变化和组合使用。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:深挖 Go 之 for-range 排坑指南
下一篇:##mysql数据库的安装部署
相关文章

 发表评论

暂时没有评论,来抢沙发吧~