CentOS中使用Python将文本中的IP地址替换为外网地址

CentOS中使用Python将文本中的IP地址替换为外网地址

前言

使用python编写脚本,用来更新服务器的ip地址,脚本主要分为了两部分

  • 获取服务器的外网ip地址
  • 读取配置文件,将旧ip地址 替换成 新的ip地址

获取外网ip

首先需要编写python代码,用于获取外网地址

python 复制代码
# -*- coding:utf-8 -*-
from urllib2 import urlopen
# 获取ip地址
myIp = urlopen('http://ip.42.pl/raw').read()

其实就是访问一个url

bash 复制代码
http://ip.42.pl/raw

然后就会返回本机器的外网地址

最后用变量保存即可

读取配置文件

继续编写代码,读取vue的配置文件,然后取出里面的ip地址

python 复制代码
# 替换ip地址
def replace(file, newStr):
    fileData = ""
    with io.open(file, 'r', encoding='utf-8') as f:
        lines = f.readlines()
        # 查找到ip地址
        for line in lines:
            ipList = re.findall(r"\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b", line)
            if not ipList == []:
                oldStr = ipList[0]
                print file, "替换ip地址:", oldStr, "->", newStr
                break
        # 替换ip地址
        for line in lines:
            line = line.replace(oldStr, newStr)
            fileData += line

    with io.open(file,"w",encoding="utf-8") as f:
        f.write(fileData)

我们这里是使用了正则表达式,从文本中取出ip地址,因为re.findall获取到的是一个列表,所以我们只需要判断第一个元素,然后将文本中的旧ip地址,替换成服务器上获取到的,最后再将文本写入到源文件中,完成整个过程

完整代码

完整的 replaceIp.py 脚本如下所示

python 复制代码
# -*- coding:utf-8 -*-
from urllib2 import urlopen
import io
import re
# 获取ip地址
myIp = urlopen('http://ip.42.pl/raw').read()

# 替换ip地址
def replace(file, newStr):
    fileData = ""
    with io.open(file, 'r', encoding='utf-8') as f:
        lines = f.readlines()
        # 查找到ip地址
        for line in lines:
            ipList = re.findall(r"\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b", line)
            if not ipList == []:
                oldStr = ipList[0]
                print file, "替换ip地址:", oldStr, "->", newStr
                break
        # 替换ip地址
        for line in lines:
            line = line.replace(oldStr, newStr)
            fileData += line

    with io.open(file,"w",encoding="utf-8") as f:
        f.write(fileData)

replace("../config/vue_admin.env", myIp)
replace("../config/vue_web.env", myIp)

其中 vue_mogu_admin.env 文件内容如下所示【替换前】

bash 复制代码
NODE_ENV=production
ADMIN_API=http://127.0.0.1:8607/admin
PICTURE_API=http://127.0.0.1:8607/picture
WEB_API=http://127.0.0.1:8607/web
Search_API=http://127.0.0.1:8607/search
FILE_API=http://127.0.0.1:8600/
BLOG_WEB_URL=http://127.0.0.1:9527
SOLR_API=http://127.0.0.1:8080/solr
ELASTIC_SEARCH=http://127.0.0.1:5601

然后我们执行下面命令,开始替换ip地址

bash 复制代码
python2 replaceIp.py

最后再次查看 vue_admin.env 文件

bash 复制代码
NODE_ENV=production
ADMIN_API=http://101.132.122.175:8607/admin
PICTURE_API=http://101.132.122.175:8607/picture
WEB_API=http://101.132.122.175:8607/web
Search_API=http://101.132.122.175:8607/search
FILE_API=http://101.132.122.175:8600/
BLOG_WEB_URL=http://101.132.122.175:9527
SOLR_API=http://101.132.122.175:8080/solr
ELASTIC_SEARCH=http://101.132.122.175:5601

ip地址已经成功被替换成了外网的地址了~

相关推荐
wow_DG8 分钟前
【Python✨】VS Code 秒开 Python 类型检查:一招 mypy + settings.json 让你的 Bug 原地现形!
python·json·bug
Aspect of twilight25 分钟前
LeetCode华为大模型岗刷题
python·leetcode·华为·力扣·算法题
空影星42 分钟前
高效追踪电脑使用时间,Tockler助你优化时间管理
python·django·flask
LiLiYuan.1 小时前
【Lombok库常用注解】
java·开发语言·python
不去幼儿园1 小时前
【启发式算法】灰狼优化算法(Grey Wolf Optimizer, GWO)详细介绍(Python)
人工智能·python·算法·机器学习·启发式算法
二川bro2 小时前
数据可视化进阶:Python动态图表制作实战
开发语言·python·信息可视化
青青子衿_212 小时前
TikTok爬取——视频、元数据、一级评论
爬虫·python·selenium
00后程序员张2 小时前
iOS 抓不到包怎么办?从 HTTPS 解密、QUIC 排查到 TCP 数据流分析的完整解决方案
android·tcp/ip·ios·小程序·https·uni-app·iphone
忘却的旋律dw2 小时前
使用LLM模型的tokenizer报错AttributeError: ‘dict‘ object has no attribute ‘model_type‘
人工智能·pytorch·python
20岁30年经验的码农3 小时前
Java RabbitMQ 实战指南
java·开发语言·python