如何使用Ohai提取各主机内核版本、补丁日期并输出至日志文件
使用Ohai提取主机内核信息的方法
一、提取内核版本与补丁日期并追加到日志文件
Ohai默认输出JSON格式的系统属性,可结合命令行工具过滤所需字段,按指定格式写入日志。
单台主机操作步骤
- 确保主机已安装Ohai(可通过
gem install ohai或Chef客户端自带) - 执行以下命令提取信息并追加到日志:
# 提取主机名、内核版本、补丁日期 HOSTNAME=$(ohai hostname) KERNEL_RELEASE=$(ohai kernel.release) # 从kernel.version字段中提取补丁日期(适配多数Linux发行版) PATCH_DATE=$(ohai kernel.version | grep -oE '[A-Z][a-z]{2} [0-9]{1,2} [0-9:]{8} [0-9]{4}') # 按指定格式追加到日志文件 echo "$HOSTNAME:kernalpatch:$PATCH_DATE" >> /var/log/kernel_patch_record.log
批量主机自动化(Chef Recipe示例)
如果通过Chef管理集群,可编写Recipe自动在所有节点执行:
# 确保日志文件存在 file '/var/log/kernel_patch_record.log' do owner 'root' group 'root' mode '0644' action :create_if_missing end # 执行信息提取与日志追加 execute 'log_kernel_patch_details' do command <<-EOF HOSTNAME=$(ohai hostname) KERNEL_RELEASE=$(ohai kernel.release) PATCH_DATE=$(ohai kernel.version | grep -oE '[A-Z][a-z]{2} [0-9]{1,2} [0-9:]{8} [0-9]{4}') echo "$HOSTNAME:kernalpatch:$PATCH_DATE" >> /var/log/kernel_patch_record.log EOF # 避免重复写入同一主机的信息 not_if "grep -q \"#{node['hostname']}:kernalpatch:\" /var/log/kernel_patch_record.log" end
二、提取内核版本与安装日期
Ohai本身没有直接存储内核安装日期,但可以结合系统包管理器或Ohai的packages属性查询:
针对Debian/Ubuntu系列
# 提取内核包名 KERNEL_PKG=$(dpkg -l | grep linux-image-$(ohai kernel.release) | awk '{print $2}') # 获取安装日期 INSTALL_DATE=$(dpkg -s $KERNEL_PKG | grep 'Installed-Since' | awk -F': ' '{print $2}') # 输出格式化结果 echo "$(ohai hostname):kernelversion:$(ohai kernel.release):installdate:$INSTALL_DATE"
针对RHEL/CentOS系列
# 提取内核包名 KERNEL_PKG=$(rpm -q kernel-$(ohai kernel.release)) # 获取安装日期 INSTALL_DATE=$(rpm -qi $KERNEL_PKG | grep 'Install Date' | awk -F': ' '{print $2}') # 输出格式化结果 echo "$(ohai hostname):kernelversion:$(ohai kernel.release):installdate:$INSTALL_DATE"
通用Ohai包属性查询(适配支持的系统)
利用Ohai的packages节点直接查询内核包的安装时间:
ohai packages | jq ".[] | select(.name | test(\"linux-image|kernel\")) | select(.version == \"$(ohai kernel.release)\") | .install_time"
注意事项
- 不同Linux发行版的内核字段、包命名规则存在差异,需根据实际环境调整命令
- 若主机未安装
jq,可通过apt install jq或yum install jq安装 - 批量操作时优先使用Chef等自动化工具,减少手动操作成本
内容的提问来源于stack exchange,提问作者Emma
相关产品推荐
相关产品推荐

