linux的shell脚本,在公网IP变化后,修改配置文件中相关的值

目录

一、背景说明

二、脚本使用前提

三、xmlstarlet介绍

        1、功能特点

        (1)查询和过滤

        (2)修改和更新

        (3)批处理操作

        (4)跨平台支持

        (5)转换和格式化

        (6)验证和校验

        2、基本用法

        3、常用命令

        (1)ed(编辑)

        (2)sel(选择)

        (3)fo(格式化)

        (4)tr(转换)

        (5)val(验证)

        (6)elt(创建元素)

四、脚本详解


一、背景说明

        在当今的IT环境中,XML文件因其结构化和易读性而被广泛应用于配置管理、数据交换和存储等多个领域。然而,随着网络环境的不断变化,XML文件中配置的IP地址等网络参数往往需要频繁更新。手动编辑这些文件不仅耗时费力,还容易出错。为了解决这个问题,xmlstarlet这一强大的命令行工具应运而生,它允许我们以高效、自动化的方式修改XML文件。

        本文将详细介绍如何使用xmlstarlet命令编写一个脚本,以快速准确地修改XML文件中指定位置的IP地址。xmlstarlet以其丰富的功能和简便的操作,成为了处理XML文件的得力助手。通过本文的学习,你将能够掌握如何利用这一工具,大幅提升XML文件管理的效率和准确性。

二、脚本使用前提

        Shell脚本中使用了xmlstarlet命令,因此需要提前在服务器上安装xmlstarlet

        安装xmlstarlet:

        centos:yum install xmlstarlet

        Ubuntu:apt-get install xmlstarlet

三、xmlstarlet介绍

        Xmlstarlet是一个功能强大的命令行工具,专门用于处理XML文档。它提供了丰富的命令集,支持查询、编辑、转换、验证和格式化XML数据。

        1、功能特点

        (1)查询和过滤

        支持XPath和XQuery表达式,可以方便地定位和提取XML文档中的元素和属性。

        (2)修改和更新

        可以编辑XML文档,包括插入、修改、删除元素和属性,以及重命名元素和属性。

        (3)批处理操作

        支持通过批处理文件来执行一系列的XML操作,有助于自动化处理大量的XML文件。

        (4)跨平台支持

        可以在多个操作系统上运行,包括Linux、Windows和Mac OS,是一个通用的XML处理工具。

        (5)转换和格式化

        支持将XML文档转换为其他格式(如HTML、CSV或JSON),还可以格式化XML文档,使其更易于阅读和理解。

        (6)验证和校验

        可以验证XML文档的结构和语法是否符合特定的规范,如DTD(文档类型定义)或XSD(XML模式定义)。

        2、基本用法

        xmlstarlet [命令] [选项] [输入文件]

        如果没有提供输入文件,xmlstarlet将从标准输入读取XML数据。

        3、常用命令

        (1)ed(编辑)

        用于编辑XML文档。例如,替换XML中的内容:

        xmlstarlet ed -u '/path/to/node' -v 'new_value' input.xml > output.xml

        (2)sel(选择)

        用于查询XML文档。例如,选择特定的XML节点:

        xmlstarlet sel -t -v '/path/to/node' input.xml

        (3)fo(格式化)

        用于格式化XML文件,使其更易于阅读。例如,格式化XML文件:

        xmlstarlet fo input.xml > output.xml

        (4)tr(转换)

        用于将XML转换为其他格式。例如,将XML转换为HTML:

        xmlstarlet tr transform.xsl input.xml > output.html

        (5)val(验证)

        用于验证XML文档是否符合指定的DTD或XML Schema。例如,验证XML文件:

        xmlstarlet val -e input.xml

        (6)elt(创建元素)

        用于创建新的XML元素。例如,创建一个新的XML元素:

        xmlstarlet elt --root root --child mychild --attribute name="value"

四、脚本详解

#!/bin/bash

# 循环检测IP地址

while true

do

# 定义配置文件路径

xml_file="/home/config.xml"

# 获取当前 XML 文件中指定位置的IP地址

current_ip=$(xmlstarlet sel -t -v "/root//usenat/@publicip" "$xml_file")

# 获取新的公网 IP 地址

new_public_ip=$(curl -s http://ifconfig.me)

# 检查新旧 IP 地址是否相同

if [[ "$new_public_ip" != "$current_ip" ]]; then

    # 如果 IP 地址不同,则更新 XML 文件中的IP地址

    # 使用 xmlstarlet 更新 XML 文件中指定位置的IP地址

    xmlstarlet ed --inplace --update "/root//usenat/@publicip" --value "$new_public_ip" "$xml_file"

    echo "New public IP address $new_public_ip has been updated in the XML file."

else

    echo "Public IP address is still $new_public_ip, no need to update."

Fi

# 每60秒后循环检测公网IP地址

echo "sleep 60s,please wait"

sleep 60

done


文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。


猜你喜欢

转载自blog.csdn.net/weixin_70208651/article/details/143188370