您的位置:首页 > 新闻 > 资讯 > 开网站靠什么挣钱_it外包主要做什么_网络精准推广_搜狗竞价

开网站靠什么挣钱_it外包主要做什么_网络精准推广_搜狗竞价

2025/5/9 16:28:23 来源:https://blog.csdn.net/baidu_21349635/article/details/145682366  浏览:    关键词:开网站靠什么挣钱_it外包主要做什么_网络精准推广_搜狗竞价
开网站靠什么挣钱_it外包主要做什么_网络精准推广_搜狗竞价

文章目录

    • 前言
    • 引入包
    • yaml原始内容
    • 操作目标
    • 具体代码
    • 执行
    • 查看结果
    • 总结:

前言

之前有个需求,动态修改ubuntu20的ip,看了下: 本质上是修改01-netcfg.yaml文件,然后执行netplan apply就可以了。
所以,需求就变成了 如何对yaml文件的内容进行读取,修改,写入。

引入包

其实springboot提供了2个maven的包用于解析yaml(springboot的各种配置文件都是yaml),引入:

	<!-- Jackson (用于JSON处理) --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></dependency><!-- SnakeYAML (用于YAML解析和生成) --><dependency><groupId>org.yaml</groupId><artifactId>snakeyaml</artifactId></dependency>

yaml原始内容

network:version: 2renderer: networkdethernets:eth0:dhcp4: falseaddresses:- 192.168.150.1/24optional: trueeth1:dhcp4: falseaddresses:- 192.168.150.1/24optional: trueenp3s0:dhcp4: trueaddresses: []dhcp-identifier: macoptional: trueenp4s0:dhcp4: trueaddresses: []dhcp-identifier: macoptional: trueenp6s0:dhcp4: trueaddresses: []dhcp-identifier: macoptional: trueenp7s0:dhcp4: trueaddresses: []dhcp-identifier: macoptional: trueenp8s0:dhcp4: falseaddresses:- 192.168.150.1/24dhcp-identifier: macoptional: true

操作目标

目前的配置文件etho网卡是动态的获取ip,现在把配置文件ech修改如下:
固定ip:dhcp4 --》 false
添加网卡: gateway4: 172.16.10.254
设置ip地址:
设置dns,不然不能上外网
在这里插入图片描述

具体代码

public static void main(String[] args) {try {// Step 1: 读取YAML文件并加载为Map, 输入YAML文件路径InputStream inputStream = new FileInputStream("01-netcfg.yaml");Yaml yaml = new Yaml();Map<String, Object> yamlMap = yaml.load(inputStream);// Step 2: 使用ObjectMapper将Map转换为JSON字符串ObjectMapper om = new ObjectMapper();String jsonStr = om.writeValueAsString(yamlMap);// Step 3: 将JSON字符串解析成JsonNode,便于修改JsonNode rootNode = om.readTree(jsonStr);// Step 4: 修改eth0节点JsonNode ethernetsNode = rootNode.path("network").path("ethernets");// 获取eth0节点并修改其值JsonNode eth0Node = ethernetsNode.path("eth0");// 创建新的eth0配置((ObjectNode) eth0Node).put("dhcp4", false);((ObjectNode) eth0Node).putArray("addresses").add("172.16.10.43/24");((ObjectNode) eth0Node).put("gateway4", "172.16.10.254");// 设置新的DNS地址作为数组JsonNode nameserversNode = eth0Node.path("nameservers");// 使用ArrayNode来生成数组格式ArrayNode arrayNode = om.createArrayNode();arrayNode.add("114.114.114.114");arrayNode.add("8.8.8.8");arrayNode.add("8.8.4.4");((ObjectNode) nameserversNode).set("addresses", arrayNode);// Step 5: 将修改后的JsonNode转换为Map,这里就是将JsonNode转换为MapMap<String, Object> modifiedMap = om.convertValue(rootNode, Map.class);// Step 6: 使用SnakeYAML将修改后的Map转换为YAML格式DumperOptions options = new DumperOptions();options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);Yaml yamlWriter = new Yaml(options);StringWriter stringWriter = new StringWriter();yamlWriter.dump(modifiedMap, stringWriter);// Step 7: 将新的YAML写回文件try (BufferedWriter writer = new BufferedWriter(new FileWriter("01-netcfg.yaml"))) {writer.write(stringWriter.toString());}System.out.println("YAML updated successfully!");} catch (IOException e) {e.printStackTrace();}

执行

在这里插入图片描述

查看结果

在这里插入图片描述
显示已经修改!!

总结:

文章主要介绍了如何使用Java操作YAML文件,具体实现了读取、修改和写入YAML文件的过程。通过引入Jackson和SnakeYAML两个包,实现了将YAML文件内容转换为Map,然后再将Map修改后重新转换为YAML格式并写回文件。

在具体操作目标上,通过代码示例实现了将原始YAML文件中的某一节点进行修改,包括修改网络配置,设置固定IP地址、网关、DNS等。最后展示了执行结果,并验证配置已经修改成功。

通过本文的示例,读者可以了解如何在Java中操作YAML文件,实现对YAML配置文件的动态修改,为实际项目中类似需求提供了解决思路和代码实现。


本文完

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com