0
点赞
收藏
分享

微信扫一扫

网络设备批量操作

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


#!/usr/bin/env python
#vers:1.0
#auth:chier11
#date:202207
import re
import paramiko
import datetime,time


def 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:
pass

def 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 addrlist

def 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_list

def 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_list

if __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",每行一个地址。

网络设备批量操作_ip地址

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





举报

相关推荐

0 条评论