2017-07-07 40 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

相關問題