2017-07-07 71 views
0

我正在使用 service dhcpd status获取DHCP服务器状态。结果是如何从屏幕中删除系统重定向消息

重定向为/ bin/systemctl状态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状态dhcpd.service

活跃

我只是不明白如何删除重定向到/ bin/systemctl状态dhcpd.service部分来自re SULT。

我试过these answers,但他们没有解决我的问题。

我错过了什么吗?还是有更好的方法来做到这一点?我不熟悉shell脚本。

在此先感谢。

+1

我建议更换'服务DHCPD用'服务的dhcpd状态status' 2> &1'。 – Cyrus

+0

而不是'service dhcpd status | awk ...'你应该使用:'service dhcpd status |&awk ...' – anubhava

+0

@Cyrus不,它不会给我想要的结果。我只想采取'积极',也删除此“重定向到/斌/ systemctl状态dhcpd.service” – Sachith

回答

2

只需使用Awk寻找Active:字符串和打印状态

service dhcpd status 2>&1 | awk '$1=="Active:"{print $2}' 

的部分$1="Active:"查找其第一列的值是Active:,并打印下一列值,它是你正在寻找的状态行。

如上所示,将标准错误流stderr重定向到stdout并在其上应用Awk以过滤错误消息。


正如意见建议的anubhava你可以使用|&在最新版本的bashstderr重定向到stdout

service dhcpd status |& awk '$1=="Active:"{print $2}' 
+0

是的,我只是想删除打印在终端 – Sachith

+0

@Sachith“重定向为/ bin/systemctl状态dhcpd.service”:请参见上述 – Inian

+1

噢,对不起,我没有看到看到更新后的答案我的更新。删除我的和upvoted你的 – anubhava