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地址已经成功被替换成了外网的地址了~

相关推荐
Rolei_zl26 分钟前
AIGC(生成式AI)试用 41 -- 程序(Python + OCR)-3
python·aigc
eybk27 分钟前
使用Beeware开发文件浏览器获取Android15的文件权限
python
柒柒钏1 小时前
VSCode 终端配置与 Python 虚拟环境使用指南
ide·vscode·python
环己酮1 小时前
py数据科学学习笔记day4-空间数据统计分析与可视化(2)
python
q***48252 小时前
基于python语言的网页设计(手把手教你设计一个个人博客网站)
开发语言·python
qq_22589174662 小时前
基于Python+Django餐饮评论大数据分析与智能推荐系统 毕业论文
开发语言·后端·python·信息可视化·数据分析·django
是Judy咋!2 小时前
Mongodb---副本集搭建(hashed分片)
数据库·mongodb·centos
FreakStudio2 小时前
串口协议解析实战:以 R60ABD1 雷达为例,详解 MicroPython 驱动中数据与业务逻辑的分离设计
python·单片机·pycharm·嵌入式·面向对象·硬件·电子diy
南山安2 小时前
让 LLM 与外界对话:使用 Function Calling 实现天气查询工具
人工智能·后端·python
用户12039112947263 小时前
打破信息壁垒:手把手教你实现DeepSeek大模型的天气查询功能
python·openai