我想用awk或sed命令制作一个脚本来加固etcdefaultgrub文件。
原来的配置文件是这样的
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/vg00-swap rd.lvm.lv=vg00/root rd.lvm.lv=vg00/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
我想在GRUB_CMDLINE_LINUX=这一行添加 "ipv6.disable=1 audit=1",问题是这个配置文件是用双引号引用的,所以我不能用awk命令成功输出。
Desired output如下。
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/vg00-swap rd.lvm.lv=vg00/root rd.lvm.lv=vg00/swap rhgb quiet ipv6.disable=1 audit=1"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
我试过如下,但结果参数不在双引号内。
awk '/GRUB_CMDLINE_LINUX/{$0=$0" ipv6.disable=1 audit=1"}{print}' /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/vg00-swap rd.lvm.lv=vg00/root rd.lvm.lv=vg00/swap rhgb quiet" ipv6.disable=1 audit=1
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
谁能帮帮我?
解决方法是将最后的引号改为 ipv6.disable=1 audit=1"
awk '/GRUB_CMDLINE_LINUX/{sub("\"$", " ipv6.disable=1 audit=1\"")}1'/etc/default/grub
$ awk '/GRUB_CMDLINE_LINUX/{sub("\"$", " ipv6.disable=1 audit=1\"")}1' /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/vg00-swap rd.lvm.lv=vg00/root rd.lvm.lv=vg00/swap rhgb quiet ipv6.disable=1 audit=1"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true