Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
作为启动脚本的一部分,我需要检查一个特定的 TCP 服务是否实际启动并运行。通过阅读配置文件,我知道目标主机和服务名称是什么。我打算使用nc向该服务发送示例请求,因为我知道如何使用它并且脚本很好,问题是nc无法将我的配置中的服务名称解析为端口号...
这让我想到了我的(两部分)问题:是否有 bash 内置或常用分布式实用程序(可能是部分或 RHEL 5 发行版)可以将服务名称解析为端口号?除了 netcat 之外,还有一个简单的实用程序可以在我的脚本中使用吗?
getent是你想要的。
getent
例如:getent services ftp
getent services ftp
无论如何,您都需要解析输出,但您有端口。
您的系统中有/etc/services文件吗?可能每个可移植程序(包括nc和getent许多其他程序)都使用getservbyname(3)来解析给定服务名称的端口号。反过来,该函数从/etc/services文件中读取数据。
nc
getservbyname(3)
/etc/services