一、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,表示從第二個字符開始提取子字符串。