python自动化管理和zabbix监控网络设备(防火墙和python自动化配置部分)

目录

前言

一、ssh配置

1.FW1

2.core-sw1

3.core-sw2

二、python自动化配置防火墙

三、验证DNAT

四、验证DNAT


前言


视频演示请访问b站主页

白帽小丑的个人空间-白帽小丑个人主页-哔哩哔哩视频

一、ssh配置

给需要自动化管理的设备配置ssh服务端用户名和密码

1.FW1

#注意不要使用本地登录的用户

aaa     
manager-user user1
password cipher Huawei@123
level 15     
service-type ssh     
quit     
quit     


user-interface vty 0 4
 authentication-mode aaa
 protocol inbound all
quit

stelnet server enable   
ssh user user1
ssh user user1 authentication-type password
ssh user user1 service-type stelnet

#注意长度为2048
rsa local-key-pair create
Y
2048

2.core-sw1

aaa     

local-user huawei password cipher huawei

local-user huawei service-type ssh telnet

local-user huawei privilege level 15

quit

stelnet server enable

user-interface vty 0 4
authentication-mode aaa
protocol inbound all

quit

rsa local-key-pair create  
Y
2048

ssh user huawei authentication-type password  

ssh user huawei service-type stelnet
quit

3.core-sw2

aaa     

local-user huawei password cipher huawei

local-user huawei service-type ssh telnet

local-user huawei privilege level 15

quit

stelnet server enable

user-interface vty 0 4
authentication-mode aaa
protocol inbound all

quit

rsa local-key-pair create  
Y
2048

ssh user huawei authentication-type password  

ssh user huawei service-type stelnet
quit

二、python自动化配置防火墙

import paramiko
import getpass
import time

ip = "1.1.1.1"


username = input("Username: ")
password = getpass.getpass("Password: ")

ssh_client = paramiko.SSHClient()

#SNAT配置
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=ip, username=username, password=password, look_for_keys=False)



print("Successfully logged in" + ip)

#配置外网地址
command = ssh_client.invoke_shell()
command.send("system-view\n")
command.send("inter gi1/0/4\n")
command.send("ip address 132.12.12.10\n")

time.sleep(0.2)
#PNAT转化地址池

command.send("nat address-group SNAT\n")
command.send("mode pat\n")
command.send("section 0 132.12.12.10\n")
command.send("route enable\n")
time.sleep(0.2)

#PNAT源地址转化策略

command.send("nat-policy\n")
command.send("rule name pat\n")
command.send("source-zone trust\n")
command.send("destination-zone untrust\n")
command.send("source-address 172.16.0.0 16\n")
command.send("source-address 172.200.0.0 0.0.1.255\n")
command.send("source-address 172.210.2.0 0.0.1.255\n")
command.send("source-address 172.220.4.0 0.0.1.255\n")
command.send("source-address 172.230.6.0 0.0.1.255\n")
command.send("source-address 172.240.8.0 0.0.1.255\n")
command.send("source-address 172.250.10.0 0.0.1.255\n")
command.send("action source-nat address-group SNAT\n")
time.sleep(0.2)

#PNAT源地址转化策略

command.send("security-policy\n")
command.send("rule name NAT\n")
command.send("source-zone trust\n")
command.send("destination-zone untrust\n")
command.send("source-address 172.16.0.0 16\n")
command.send("source-address 172.200.0.0 0.0.1.255\n")
command.send("source-address 172.210.2.0 0.0.1.255\n")
command.send("source-address 172.220.4.0 0.0.1.255\n")
command.send("source-address 172.230.6.0 0.0.1.255\n")
command.send("source-address 172.240.8.0 0.0.1.255\n")
command.send("source-address 172.250.10.0 0.0.1.255\n")
command.send("action permit\n")
time.sleep(0.2)

#缺省路由

command.send("ip route-static 0.0.0.0 0 132.12.12.11\n")
command.send("ospf 1\n")
command.send("default-route-advertise always\n")
command.send("q\n")
time.sleep(0.2)


#----------------------------------------------------------------------------------------------------



#DNAT转化内网地址池
command.send("ip pool dmz-pool\n")
command.send("network 192.168.170.0 mask 255.255.255.0 \n")
command.send("gateway 192.168.170.254\n")

time.sleep(0.2)

#DNAT转化
command.send("nat server protocol udp global 132.12.12.10 80 inside 192.168.170.100 80\n")
command.send("nat server protocol tcp global 132.12.12.10 80 inside 192.168.170.100 80\n")

#安全策略
command.send("security-policy \n")
command.send("rule name allow-http-to-dmz\n")
command.send("source-zone untrust\n")
command.send("destination-zone dmz\n")
command.send("destination-address 192.168.170.100 32\n")
command.send("action permit \n")

time.sleep(0.2)

#允许http流量通过外网口
command.send("inter gi1/0/2\n")
command.send("service-manage http permit\n")
time.sleep(0.2)

#----------------------------------------------------------
#配置ospf路由,让监控区访问内部设备
command.send("inter gi1/0/2\n")
command.send("ip address 10.1.90.2 30\n")
command.send("quit\n")
command.send("ospf 1\n")
command.send("area 2\n")
command.send("network 10.1.0.0 255.255.0.0\n")
command.send("area 1\n")
command.send("network 10.1.90.0 0.0.0.3\n")
time.sleep(0.2)
time.sleep(0.2)

output = command.recv(65535)
print(output.decode('utf-8'))

ssh_client.close


运行脚本

三、验证DNAT

四、验证DNAT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/415049.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux NFC 子系统剖析

1.总览 linux源码中NFC在net/nfc下,文件结构如下图: hci:Host Controller Interface 主要是针对NFC的主机-控制器接口协议 nci:NFC Controller Interface 主要是NFC的控制器接口协议,用于NFCC(NFC Controller)和DH(…

进程的控制

文章目录 进程退出进程等待进程程序替换 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通俗易懂,风趣幽默,忍不住分享一下给大家。 点击跳转到网站。 进程退出 进程的退出一共有三种场景。 程序跑完…

nacos开启鉴权+springboot配置用户名密码

nacos默认没有开启鉴权,springboot无需用户名密码即可连接nacos。从2.2.2版本开始,默认控制台也无需登录直接可进行操作。 因此本文记录一下如何开启鉴权,基于nacos2.3.0版本。 编辑nacos服务端的application.properties: # 开…

硬件工程师入门基础知识(二)片式电阻、片式网络电阻标识和焊接使用注意事项

片式电阻、片式网络电阻标识和使用注意事项 1.概述2.阻值标识2.1 标识原则2.2片式类电阻、片式电阻网络标识方法2.3电阻网络标识方法 3.电阻产品包装3.1片式电阻、片式电阻网络的包装3.2电阻网络的包装 4.使用注意事项4.1 片式电阻推荐焊盘尺寸4.2片式电阻网络推荐焊盘尺寸 5.焊…

STM32 +合宙1.54“ 电子墨水屏(e-paper)驱动显示示例

STM32 合宙1.54“ 电子墨水屏(e-paper)驱动显示示例 📍相关篇《Arduino框架下ESP32/ESP8266合宙1.54“ 电子墨水屏(e-paper)驱动显示示例》🔖程序是从GooDisplay品牌和微雪电子下同型号规格墨水屏的示例程序…

Vue项目 快速上手(如何新建Vue项目,启动Vue项目,Vue的生命周期,Vue的常用指令)

目录 一.什么Vue框架 二.如何新建一个Vue项目 1.使用命令行新建Vue项目 2.使用图形化界面新建Vue项目 三.Vue项目的启动 启动Vue项目 1.通过VScode提供的图形化界面启动Vue项目 2.通过命令行的方式启动Vue项目 四.Vue项目的基础使用 常用指令 v-bind 和 v-model v…

【Unity每日一记】角色控制器Character Contorller

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

c# .net8 香橙派orangepi + hc-04蓝牙 实例

这些使用c# .net8开发,硬件 香橙派 orangepi 3lts和 hc-04蓝牙 使用场景:可以通过这个功能,手机连接orangepi进行wifi等参数配置 硬件: 1、带USB口的linux开发板orangepi 2、USB 转TTL 中转接蓝牙(HC-04) 某宝上买的蓝牙官方网有调试工具:HC-T串口助手 https://www…

leetcode 3.反转链表;

1.题目: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 2.用例: 3.题目解析: (1)函数头: 要求返回结点,就 ListNode* reverseList(ListNode* head)&…

【数据开发】大数据岗位,通用必备技术栈(数据分析、数据工程、数据科学)

【数据开发】大数据岗位,通用必备技术栈(数据分析、数据工程、数据科学) 文章目录 1、岗位与技术要求1.1 常见岗位介绍1.2 行业发展方向1.3 附部分JD 2、数据开发技术栈2.1 数据处理流程2.2 学习路线与框架 3、数据分析技术栈3.1 基础知识3.2…

如何一步一步地优化LVGL的丝滑度

经过一番周折将LVGL移植到了STM32F407单片机上,底层驱动的LCD是st7789,移植时的条件和环境如下: ●LVGL用的是单缓冲,一次刷新10行; ●刷新函数用的是最原始的一个一个打点的方式; ●ST7789底层发送数据用的…

【MySQL】学习和总结标量子查询

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-kLo6jykc7AcEVEQk {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

JMeter--9.录制脚本

录制步骤 1.新建线程组:测试计划->线程->线程组 测试计划下,至少要有1个线程组,因为在录制器中需要选择【目标控制器】 2. 新建录制器:测试计划->非测试原件->HTTP(S)测试脚本记录器(HTTP代理服务器&…

Linux磁盘如何分区?

首先需要先给虚拟机添加磁盘 sblk #查看磁盘设备 得到以下内容: NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 19G 0 pa…

毕业后的那两年,我是怎么从一个啥也不会的小白成长为成熟职场人的?

对于2023应届生而言,从毕业到踏入职场也许正是你人生中很大的一个变化,但在初入职场的期间,很多同学很容易因为一些经验问题而误入弯路。 笔者从一个职场萌新到如今的职场老人,一路走来也经历了不少社会毒打。在职场生涯中&#…

kubectl 命令行管理K8S(上)

目录 陈述式资源管理方式 介绍 命令 项目的生命周期 创建 kubectl create命令 发布 kubectl expose命令 更新 kubectl set 回滚 kubectl rollout 删除 kubectl delete 应用发布策略 金丝雀发布 陈述式资源管理方式 介绍 1.kubernetes 集群管理集群资源…

Nest.js权限管理系统开发(八)jwt登录

安装相关依赖 虽然仅使用nestjs/jwt就能实现身份验证的功能,但是使用passport能在更高层次上提供更多便利。Passport 拥有丰富的 strategies 生态系统,实现了各种身份验证机制。虽然概念简单,但你可以选择的 Passport 策略集非常丰富且种类繁…

kotlin与java的相互转换

Kotlin转java 将kotlin代码反编译成java Tools -> Kotlin -> Show Kotlin Bytecode 然后点击 【Decompile】 生成java代码 java转kotlin Code -> Convert Java File To Kotlin File

Netty入门指南:从零开始的异步网络通信

欢迎来到我的博客,代码的世界里,每一行都是一个故事 Netty入门指南:从零开始的异步网络通信 前言Netty简介由来:发展历程:异步、事件驱动的编程模型: 核心组件解析通信协议高性能特性异步编程范式性能优化与…

2055041-59-1,NH-(PEG4-acid)2,能将基因和蛋白质导入到细胞内

您好,欢迎来到新研之家 文章关键词:2055041-59-1,NH-bis(PEG4-acid) HCl salt,NH-(PEG4-acid)2,NH-bis(PEG4-acid),NH-BIS(四聚乙二醇-羧酸) 盐酸盐 一、基本信息 【产品简介】:NH bis (PEG4…