千家信息网

sed运用实例一——基于变量的动态替换

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,在工作中我需要修改两个文件:文件一:/etc/vmware/networkingVERSION=1,0answer VNET_1_DHCP yesanswer VNET_1_DHCP_CFG_HASH
千家信息网最后更新 2025年12月03日sed运用实例一——基于变量的动态替换

在工作中我需要修改两个文件:

文件一:/etc/vmware/networking

  1. VERSION=1,0
  2. answer VNET_1_DHCP yes
  3. answer VNET_1_DHCP_CFG_HASH 50CE8453B1072EA401BFFA704E6C01F7AE0BA67C
  4. answer VNET_1_HOSTONLY_NETMASK 255.255.255.0
  5. answer VNET_1_HOSTONLY_SUBNET 172.16.77.0
  6. answer VNET_1_VIRTUAL_ADAPTER yes
  7. answer VNET_8_DHCP yes
  8. answer VNET_8_DHCP_CFG_HASH 1DA1A936DCB3AA3313CF293A9C96D25B76AB48A2
  9. answer VNET_8_HOSTONLY_NETMASK 255.255.255.0
  10. answer VNET_8_HOSTONLY_SUBNET 192.168.43.0
  11. answer VNET_8_NAT yes
  12. answer VNET_8_VIRTUAL_ADAPTER yes

文件二:/etc/vmware/vmnet8/dhcpd/dhcpd.conf

  1. # Configuration file for ISC 2.0 vmnet-dhcpd operating on vmnet8.
  2. #
  3. # This file was automatically generated by the VMware configuration program.
  4. # See Instructions below if you want to modify it.
  5. #
  6. # We set domain-name-servers to make some DHCP clients happy
  7. # (dhclient as configured in SuSE, TurboLinux, etc.).
  8. # We also supply a domain name to make pump (Red Hat 6.x) happy.
  9. #
  10. ###### VMNET DHCP Configuration. Start of "DO NOT MODIFY SECTION" #####
  11. # Modification Instructions: This section of the configuration file contains
  12. # information generated by the configuration program. Do not modify this
  13. # section.
  14. # You are free to modify everything else. Also, this section must start
  15. # on a new line
  16. # This file will get backed up with a different name in the same directory
  17. # if this section is edited and you try to configure DHCP again.
  18. # Written at: 03/22/2013 15:49:55
  19. allow unknown-clients;
  20. default-lease-time 1800; # default is 30 minutes
  21. max-lease-time 7200; # default is 2 hours
  22. subnet 192.168.43.0 netmask 255.255.255.0 {
  23. range 192.168.43.128 192.168.43.254;
  24. option broadcast-address 192.168.43.255;
  25. option domain-name-servers 192.168.43.2;
  26. option domain-name localdomain;
  27. default-lease-time 1800; # default is 30 minutes
  28. max-lease-time 7200; # default is 2 hours
  29. option netbios-name-servers 192.168.43.2;
  30. option routers 192.168.43.2;
  31. }
  32. host vmnet8 {
  33. hardware ethernet 00:50:56:C0:00:08;
  34. fixed-address 192.168.43.1;
  35. option domain-name-servers 0.0.0.0;
  36. option domain-name "";
  37. option routers 0.0.0.0;
  38. }
  39. ####### VMNET DHCP Configuration. End of "DO NOT MODIFY SECTION" #######

需求:

将两个文件中的"192.168.43"修改为"202.16.22",不过,有时"192.168.43"会表现为其它的IP值,而要修改的目标字串"202.16.22"也可能会随着环境的改变另行设置.

基于此需求,本人编写了如下测试脚本:

针对文件一:

  1. #!/bin/bash
  2. # $vmnat_subnet_old变量表示vmnat8原有的子网配置,注意只截取前三段
  3. vmnat_subnet_old=`grep "VNET_8_HOSTONLY_SUBNET" /etc/vmware/networking | sed 's/..$//' | cut -d' ' -f 3`
  4. # $vmnat_subnet_new变量表示vmnat8子网的目标配置,注意只截取前三段
  5. vmnat_subnet_new='192.168.40'
  6. cp /etc/vmware/networking /etc/vmware/networking_bak0
  7. sed -i '/VNET_8_HOSTONLY_SUBNET/s/'"$vmnat_subnet_old"'/'"$vmnat_subnet_new"'/' /etc/vmware/networking
  8. grep "$vmnat_subnet_new" /etc/vmware/networking
  9. cp /etc/vmware/networking_bak0 /etc/vmware/networking

针对文件二:

  1. #!/bin/bash
  2. # $vmnat_subnet_new变量表示vmnat8子网的目标配置,注意只截取前三段
  3. vmnat_subnet_new='192.168.40'
  4. # $vmnat_subnet_old变量表示vmnat8原有的子网配置,注意只截取前三段
  5. vmnat_subnet_old=`grep "VNET_8_HOSTONLY_SUBNET" /etc/vmware/networking | sed 's/..$//' | cut -d' ' -f 3`
  6. cat /etc/vmware/vmnet8/dhcpd/dhcpd.conf
  7. cp /etc/vmware/vmnet8/dhcpd/dhcpd.conf /etc/vmware/vmnet8/dhcpd/dhcpd.conf_bak0
  8. sed -i '/'"$vmnat_subnet_old"'/s//'"$vmnat_subnet_new"'/g' /etc/vmware/vmnet8/dhcpd/dhcpd.conf
  9. grep "$vmnat_subnet_new" /etc/vmware/vmnet8/dhcpd/dhcpd.conf
  10. cp /etc/vmware/vmnet8/dhcpd/dhcpd.conf_bak0 /etc/vmware/vmnet8/dhcpd/dhcpd.conf

优点:

可以不用事先知道要替换的字符是(本例中:192.168.43)什么,只需要知道自己想替换为(本例中:202.16.22)什么就可以了。

呵呵,我的工作桌面截图。

文件 变量 子网 配置 目标 两个 需求 工作 不用 优点 字符 截图 桌面 环境 脚本 测试 动态 实例 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全专业能考什么证 浏览器显示未找到代理服务器 东华软件开发岗位工资待遇 密云区信息网络技术服务怎么样 浪潮服务器保修期 许昌飚速互联网科技有限公司 网络安全支付技巧 数据库字段名能大写吗 mc电脑版创造服务器 绝地求生2链接服务器失败 数据库系统开发基础知识 2018网络安全指南 网络安全责任书学校和企业 数据库2000怎样看密码 服务器怎么插普通内存吗 网络安全从我做起主题班会视频 怎么解释服务器异常 软件开发经理关键绩效指标 东西湖天融信网络安全创业园 数据库TD切高斯 延庆区服务器管理 如何制作一个人员信息数据库 吴中区智能化软件开发备案 国家网络技术协调中心考试内容 软件开发中测试的步骤的步骤 车乐保互联网科技有限公司 it中软件开发是什么意思 网络安全关于个人信息泄漏 榆林市政府网络安全宣传 精选服务器机箱推荐
0