利用Jenkins登录防火墙(或交换机)进行自动化配置(一)

本文重点是利用Jenkins如何登录网络设备进行网络配置,之后我会发一个我配置交换机的job

原始操作流程

1、规划:公司内部有一台服务器10.10.80.93 7001端口需要映射到外网,通过外网IP+端口进行访问,这就需要配置防火墙的端口映射

object network 10.10.80.93-7001
    host 10.10.80.93
    nat (inside,outside) static interface service tcp 7001 7001
access-list acl_outside extended permit tcp any host 222.11.11.11 eq 7001

下面进行利用Jenkins进行操作流程

一、build开始构建

1、手动填入需要映射的内网IP和端口

2、外网显示的端口,需要注意端口冲突,配置中我已做冲突终止操作

二、实际配置

1、配置参数化构建过程 

 2、执行shell操作

#!/bin/bash

#防火墙增加端口映射
fire_addport(){   #####这里设定一个函数,下面会调用
expect <<EOF
spawn telnet 10.10.15.20  ####防火墙IP地址
expect "Username:"
send "admin\r"    ####防火墙I登录用户名
expect "Password:"
send "adminadmin\r"     ######防火墙登录密码
send "en\r"        ######防火墙进入特权模式
expect "Password:"
send "adminadmin\r"    ######防火墙登录密码
send "conf t\r"   ######防火墙进入配置模式
send "object network ${host_name}-${port_in}\r"   
send "host ${host_name}\r"
send "nat (inside,outside) static interface service tcp ${port_in} ${port_out}\r"
send "access-list acl_outside extended permit tcp any host 222.11.11.11 eq ${port_out}\r"
send "exit\r"
send "exit\r"
send "exit\r"
expect eof
EOF
}

#防火墙删除端口映射
fire_delport(){     #####这里设定一个函数,下面会调用
expect <<EOF
spawn telnet 10.10.15.20
expect "Username:"
send "admin\r"
expect "Password:"
send "adminadmin\r"
send "en\r"
expect "Password:"
send "adminadmin\r"
send "conf t\r"
send "no access-list acl_outside extended permit tcp any host 222.11.11.11 eq ${port_out}\r"
send "no object network ${host_name}-${port_in}\r"
send "exit\r"
send "exit\r"
send "exit\r"
expect eof
EOF
}

##########这里需要在Jenkins服务器创建一个文件写入已经开通的端口例如

#cat /App/jenkins-netdata/fireport_exist

#7002

#7003

case ${fire} in
    fire_add)
            #判断外网端口是否存在
                 cat  /App/jenkins-netdata/fireport_exist|grep $port_out
                 if [ $? -eq 0 ]
                 then
                       echo "\033[32m端口重复,请重新输入端口!\033[0m"

               #####这里如果有冲突会停止jobs
                 else
                       echo -e "\033[32m端口不存在,执行添加操作\033[0m"
                       echo "${port_out}" >> /App/jenkins-netdata/fireport_exis

               #####配置文件会根据发版进行更新
                       fire_addport
                       echo "\033[32m添加成功\033[0m"
                 fi
        ;;


    fire_del)
            #判断外网端口是否存在
                 cat  /App/jenkins-netdata/fireport_exist|grep $port_out
                 if [ $? -eq 0 ]
                 then
                       echo -e "\033[32m 外网端口存在,执行删除命令! \033[0m"
                       sed -i "/${port_out}/d" /App/jenkins-netdata/fireport_exist
                       fire_delport
                       echo "\033[32m删除成功\033[0m"
                 else
                       echo -e "\033[32m 外网映射端口不存在,无需执行删除命令 \033[0m"       
                 fi
        ;;
esac

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三颗草丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值