我有一个远程调用的脚本,它将检查服务的状态并回显我告诉它的任何内容。调用脚本的外部进程确定要检查的服务。我不需要回显自定义消息,而是回显命令的实际输出。这是我现在的脚本:
#!/bin/bash
S1="active"
Info=$(systemctl status $1 | awk 'NR==3' | awk '{print $2}')
if [ $Info == $S1 ]
then
echo $1 "is running!"
exit 0
else
echo $1 "is not running!"
exit 2
fi
正如你所看到的,它非常基本和脚本不是我的一杯茶,但这是有效的。但是我需要让它变得更复杂。在脚本中而不是回显“$ 1正在运行”或“$ 1未运行”我需要更改那些2以实际回显来自命令的结果仅给出第3行。所以我需要回声是这样的:
Active: active (running) since Fri 2015-10-30 14:58:47 CDT; 1h 7min ago
现在,脚本中命令的实际结果不包括awk'{print $ 2}'
如果结果返回“主动运行”或“主动退出”等,则需要以0退出。如果结果返回除此之外的任何内容,请退出2.这似乎相当简单但我我很难绕过我需要做出的改变。在此先感谢您的帮助,请详细说明。
答案 0 :(得分:2)
Put the entire line in Info
, not just the second field. Then extract the second field from that to check it.
info=$(systemctl status $1 | awk 'NR == 3')
read prefix status rest <<<"$info"
echo "$info"
if [ $status = $S1 ]
then
exit 0
else
exit 2
fi