我想要编写的脚本是这样的:
if [ uname -r is not == highest version of kernel RPM installed ]
then
echo "You need to reboot to use the latest kernel"
fi
Run Code Online (Sandbox Code Playgroud)
问题是,如果输出rpm -q kernel
类似于:
kernel-2.6.32-358.10.2.el6.x86_64
kernel-2.6.32-358.6.1.el6.x86_64
Run Code Online (Sandbox Code Playgroud)
……我如何确定哪个更高?我知道一个简单的字符串排序是不可靠的(在这个例子中它会倒退)。rpm 是否有快捷方式,还是我必须解析所有内容并自己进行比较?
下面是我的检查脚本的提取输出,我只想打印主机名和错误。如果主机没有错误,也删除主机名条目。
我想使用的逻辑是删除现有行,如果下一行不匹配“NOT OK”
可以使用awk
或sed
...任何实用程序都适合模式匹配。
NSAS_HOST:d01-emsacssb01
NSAS_HOST:d01-emsacssb02
NSAS_HOST:emsacssbcon01
NOT OK main load processes
NOT OK 5.3% AXConfigurator
NOT OK eth0.orig is not UP, but ifcfg-eth0.orig sets ONBOOT=yes
NOT OK eth1.bak is not UP, but ifcfg-eth1.bak sets ONBOOT=yes
NOT OK eth1.orig is not UP, but ifcfg-eth1.orig sets ONBOOT=yes
NSAS_HOST:emsacssb03
NOT OK eth0.orig is not UP, but ifcfg-eth0.orig sets ONBOOT=yes
NOT OK eth1.orig is not UP, but ifcfg-eth1.orig sets ONBOOT=yes
NSAS_HOST:emsacsnb01
NSAS_HOST:emsacsnb02
NSAS_HOST:d02-emsacssb01
NSAS_HOST:d02-emsacssb02
NSAS_HOST:b2bcms01
NSAS_HOST:b2bcms02
NSAS_HOST:d02-b2bpgdb01
NOT OK …
Run Code Online (Sandbox Code Playgroud)