rookie09 Asked: 2017-11-30 23:25:18 +0800 CST2017-11-30 23:25:18 +0800 CST 2017-11-30 23:25:18 +0800 CST 如何获取服务器的远程主机名? 772 我可以在 PostgreSQLSELECT语句中使用服务器的主机名吗?以下内容可能很接近,但显然不太有效: \set x \! hostname select :x; 这适用于 Debian 上的 PostgreSQL 9.6。 postgresql debian 2 个回答 Voted Best Answer Evan Carroll 2017-12-01T11:48:52+08:002017-12-01T11:48:52+08:00 我不认为这是可能的。我想你要找的是gethostname(). 在PostgreSQL 源代码中的任何地方都没有调用它。也不是utsname或任何内核接口。 所谓的是getaddrinfo提供了一种CANONNAME但本质上只是您自己的寻址服务器的方法,而不是“符号主机名”。如果您需要主机名,则必须构建一个 C 扩展来执行此操作。或者,使用具有该支持的第三方程序语言,例如 perl plperlu(通过Sys::Hostnameor Net::Domain,请参阅perldoc -q hostname);或者,或者通过plv8带有os.hostname(). 另一种方法是简单地读取文件/proc/sys/kernel/hostname。 它是一个数据库,而不是一个远程管理实用程序。你真的不能因为不这样做而责怪它。 Sahap Asci 2017-12-01T06:06:47+08:002017-12-01T06:06:47+08:00 PostgreSQL 有 2 个函数用于获取服务器地址信息。inet_server_addr()并inet_server_port()提供服务器的IP地址和端口信息。 但是我不知道获取主机名的直接方法。所以,你可以试试这个; 您可以使用 postgresql.conf 创建自定义配置并使用current_setting函数来获取该值。这里有详细的说明。 对于其他系统功能,您可以查看文档的系统信息功能部分。
我不认为这是可能的。我想你要找的是
gethostname()
. 在PostgreSQL 源代码中的任何地方都没有调用它。也不是utsname
或任何内核接口。所谓的是
getaddrinfo
提供了一种CANONNAME
但本质上只是您自己的寻址服务器的方法,而不是“符号主机名”。如果您需要主机名,则必须构建一个 C 扩展来执行此操作。或者,使用具有该支持的第三方程序语言,例如 perlplperlu
(通过Sys::Hostname
orNet::Domain
,请参阅perldoc -q hostname
);或者,或者通过plv8
带有os.hostname()
.另一种方法是简单地读取文件
/proc/sys/kernel/hostname
。它是一个数据库,而不是一个远程管理实用程序。你真的不能因为不这样做而责怪它。
PostgreSQL 有 2 个函数用于获取服务器地址信息。
inet_server_addr()
并inet_server_port()
提供服务器的IP地址和端口信息。但是我不知道获取主机名的直接方法。所以,你可以试试这个;
您可以使用 postgresql.conf 创建自定义配置并使用current_setting函数来获取该值。这里有详细的说明。
对于其他系统功能,您可以查看文档的系统信息功能部分。