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

打印 上一主题 下一主题

主题 771|帖子 771|积分 2313

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

媒介

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


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

起首需要编写python代码,用于获取外网地点
  1. # -*- coding:utf-8 -*-
  2. from urllib2 import urlopen
  3. # 获取ip地址
  4. myIp = urlopen('http://ip.42.pl/raw
  5. ').read()
复制代码
其实就是访问一个url
  1. http://ip.42.pl/raw
复制代码
然后就会返回本机器的外网地点
最后用变量保存即可
读取配置文件

继续编写代码,读取vue的配置文件,然后取出里面的ip地点
  1. # 替换ip地址
  2. def replace(file, newStr):
  3.     fileData = ""
  4.     with io.open(file, 'r', encoding='utf-8') as f:
  5.         lines = f.readlines()
  6.         # 查找到ip地址
  7.         for line in lines:
  8.             ipList = re.findall(r"\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b", line)
  9.             if not ipList == []:
  10.                 oldStr = ipList[0]
  11.                 print file, "替换ip地址:", oldStr, "->", newStr
  12.                 break
  13.         # 替换ip地址
  14.         for line in lines:
  15.             line = line.replace(oldStr, newStr)
  16.             fileData += line
  17.     with io.open(file,"w",encoding="utf-8") as f:
  18.         f.write(fileData)
复制代码
我们这里是使用了正则表达式,从文本中取出ip地点,由于re.findall获取到的是一个列表,以是我们只需要判断第一个元素,然后将文本中的旧ip地点,替换成服务器上获取到的,最后再将文本写入到源文件中,完成整个过程
完备代码

完备的 replaceIp.py 脚本如下所示
  1. # -*- coding:utf-8 -*-from urllib2 import urlopenimport ioimport re# 获取ip地点myIp = urlopen('http://ip.42.pl/raw
  2. ').read()# 替换ip地址
  3. def replace(file, newStr):
  4.     fileData = ""
  5.     with io.open(file, 'r', encoding='utf-8') as f:
  6.         lines = f.readlines()
  7.         # 查找到ip地址
  8.         for line in lines:
  9.             ipList = re.findall(r"\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b", line)
  10.             if not ipList == []:
  11.                 oldStr = ipList[0]
  12.                 print file, "替换ip地址:", oldStr, "->", newStr
  13.                 break
  14.         # 替换ip地址
  15.         for line in lines:
  16.             line = line.replace(oldStr, newStr)
  17.             fileData += line
  18.     with io.open(file,"w",encoding="utf-8") as f:
  19.         f.write(fileData)
  20. replace("../config/vue_admin.env", myIp)replace("../config/vue_web.env", myIp)
复制代码
其中 vue_mogu_admin.env 文件内容如下所示【替换前】
  1. NODE_ENV=production
  2. ADMIN_API=http://127.0.0.1:8607/admin
  3. PICTURE_API=http://127.0.0.1:8607/picture
  4. WEB_API=http://127.0.0.1:8607/web
  5. Search_API=http://127.0.0.1:8607/search
  6. FILE_API=http://127.0.0.1:8600/
  7. BLOG_WEB_URL=http://127.0.0.1:9527
  8. SOLR_API=http://127.0.0.1:8080/solr
  9. ELASTIC_SEARCH=http://127.0.0.1:5601
复制代码
然后我们执行下面命令,开始替换ip地点
  1. python2 replaceIp.py
复制代码
最后再次查看 vue_admin.env 文件
  1. NODE_ENV=production
  2. ADMIN_API=http://101.132.122.175:8607/admin
  3. PICTURE_API=http://101.132.122.175:8607/picture
  4. WEB_API=http://101.132.122.175:8607/web
  5. Search_API=http://101.132.122.175:8607/search
  6. FILE_API=http://101.132.122.175:8600/
  7. BLOG_WEB_URL=http://101.132.122.175:9527
  8. SOLR_API=http://101.132.122.175:8080/solr
  9. ELASTIC_SEARCH=http://101.132.122.175:5601
复制代码
ip地点已经乐成被替换成了外网的地点了~

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

吴旭华

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表