我正在使用dhcp服务器状态
service dhcpd status
。结果是
重定向到/ bin / systemctl status dhcpd.service ●dhcpd.service - DHCPv4服务器守护程序 加载:已加载(/usr/lib/systemd/system/dhcpd.service;已启用;供应商预设:已禁用)
活跃:从......开始活跃(正在运行)
我只想提取active
并发送到php(Zend)服务器。为此,我使用了
service dhcpd status | awk '{for (I=1;I<=NF;I++) if ($I == "Active:") {print $(I+1)};}'
结果是
重定向到/ bin / systemctl status dhcpd.service
活性
我只是不明白如何从结果中删除重定向到/ bin / systemctl status dhcpd.service 部分。
我尝试了these answers,但他们没有解决我的问题。
我错过了什么吗?或者有更好的方法吗?我不熟悉shell脚本。
提前致谢。
答案 0 :(得分:2)
只需使用Awk
查找Active:
字符串并打印状态
service dhcpd status 2>&1 | awk '$1=="Active:"{print $2}'
部分$1="Active:"
会查找第一列值为Active:
的行,并打印下一个列值,这是您要查找的状态。
如上所述,将stderr
,标准错误流重定向到stdout并对其应用Awk
以过滤错误消息。
根据anubhava在评论中的建议,您可以在|&
的最新版本中使用bash
将stderr
重定向到stdout
service dhcpd status |& awk '$1=="Active:"{print $2}'