前言

运维时发现一个问题,局域网内有成百上千台电脑,防火墙策略根据IP调整和更新,有的人不会查自己的IP地址,有没有什么工具能帮助我让不懂电脑的人一点就知道自己的IP。
于是我想到了用python快速做一个简易查内网IP网站,用他们的电脑一访问网站就知道自己的IP地址。

效果展示

前期准备

服务器:Ubuntu 22.04
python 3
还需要pip下载Flask、request、logging、TimedRotatingFileHandler,不然运行会报错。

开始

我下面做的操作只是我个人的,你可以自定义。

  1. 创建一个project文件夹,里面包含app.py文件、logs文件夹和templates文件夹

可以忽略logs文件夹下的flask-ip.log.*的日志,也可以忽略start.sh的文件

  1. 在project文件夹下,创建一个app.py
from flask import Flask,request
from flask import render_template
import logging
from logging.handlers import TimedRotatingFileHandler
app= Flask(__name__)
app.logger.setLevel(logging.INFO)# 日志存放,backupCount填写天数,我这边写了10
handler=TimedRotatingFileHandler('logs/flask-ip.log',when='D',interval=1,backupCount=10,encoding='UTF-8',delay=False,utc=True)
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
app.logger.addHandler(handler)@app.route('/')defhello_world():
    user_ip=request.remote_addr
    app.logger.info(user_ip)return render_template('index.html',user_ip=user_ip)if __name__=='__main__':# host填写部署的那台电脑或服务器
    app.run(host='192.168.1.1',port=8000)
  1. 创建logs文件夹和flask-ip.log文件
  2. 创建templates文件夹和index.html文件
<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>安全运营小组</title></head><body><divclass="container"><divclass="header"><h3class='text-muted'>你的内网IP地址是:<strong>{{user_ip}}</strong></h3><h3class='text-muted'>安全组放行规则需要以此IP做为源IP地址</h3></div><br/><hr/></div></body></html>

创建服务,自启动

cd /etc/systemd/system
sudonano mymain.service
[Unit]Description=My Python Program
After=network.target
[Service]ExecStart=/usr/bin/python3 /[你的路径]/project/app.py
WorkingDirectory=/[你的路径]/project
#StandardOutput=file:/[你的路径]/project/output.log#StandardError=file:/[你的路径]/project/error.logRestart=always
User=[电脑名字,比如guest][Install]WantedBy=default.target

最后输入命令启动

sudo systemctl start mymain.service
sudo systemctl enable mymain.service