2011-12-13 97 views
2

作爲啓動腳本的一部分,我需要檢查某個特定的TCP服務是否實際啓動並運行。通過閱讀配置文件,我知道目標主機和服務名稱是什麼。我打算使用nc向此服務發送示例請求,因爲我知道如何使用它並且它的腳本很好,問題是nc無法將我的配置中的服務名稱解析爲端口號...bash解析服務名稱

這將我帶到我的(2部分)問題: 是否有一個bash內置或共同分配的實用程序(可能是RHEL 5發行版的一部分),它可以將服務名稱解析爲端口號? 是否有一個netcat以外的簡單工具,我可以在腳本中使用它?

+0

你應該考慮傾向於socat。 – 2011-12-13 23:51:45

+0

@jørgensen我肯定會檢查出它以備將來使用,但它在我的目標系統上不可用,並且部署它的痛苦將遠遠低於從服務文件中剔除端口號的最壞情況。 – Hoons 2011-12-14 16:29:50

回答

7

getent是你想要的。

例如:getent services ftp

你需要反正解析輸出,但你必須的端口。

+0

我真的希望不要解析輸出......但這似乎是目前最好的選擇。 – Hoons 2011-12-14 16:30:53

1

有沒有/etc/services文件在你的系統中?可能每個便攜式程序(包括ncgetent和許多其他程序)都使用getservbyname(3)來解析給定服務名稱的端口號。反過來,該函數從/etc/services文件讀取數據。