一、shell脚本
#!/usr/bin/env bash# 读取文档数据
while read -r line
do# 提取服务名和命令service_name=$(echo "$line" | awk '{print $1}')command=$(echo "$line" | awk '{$1=""; print substr($0,2)}')#echo "服务名: $service_name"#echo "命令: $command"# 执行命令eval $commandif [ $? -eq 0 ];thenecho $service_namefi
done < service-list
二、服务列表service-list
Sshd systemctl status sshd > /dev/null 2>&1
Tuned systemctl status tuned > /dev/null 2>&1
Firewalld systemctl status firewalld > /dev/null 2>&1
说明,第一列是服务名,后面的是检测服务的命令。
服务检测命令必须只能返回一行数据,最好是一个单词或者数字。
$1=""
表示将第一个字段(以空格为分隔符)设置为空字符串,即删除第一个字段。$0
表示整个输入行。print substr($0, 2)
表示打印从第二个字符开始到字符串末尾的子字符串。2
是作为substr
函数的第二个参数,表示子字符串的起始位置(从1开始计数),这里设置为2,表示从第二个字符开始提取子字符串。