繁体   English   中英

Solaris10:如何以inte-started启动的bash脚本获取远程IP地址?

[英]Solaris10: How to get the remote end IP address in inted-started bash script?

在Solaris 10主机上,有一个inetd服务,该服务配置为在bash脚本获得与预先配置的端口/服务的传入TCP连接时启动bash脚本。 有没有办法在调用的bash脚本中找到远程客户端的IP地址?

如果我使用的是inetd的GNU版本,则将使用--environment命令行标志。 但是我使用的是默认的Solaris版本的inetd / inetadm,它似乎不支持此标志。 是否有与该设置等效的Solaris?

我还假设在0( stdin )或1( stdout )的fd上调用的getpeername(2)将返回所需的信息,但是我正在运行bash脚本,而且我似乎找不到找到等效方法的方法。来自bash的getpeername(2)

我唯一的选择是调用执行getpeername(2)的C-wrapper,将其存储在环境变量(或命令行参数)中,然后调用主bash脚本吗?

谢谢!

您可以从Perl一线式调用getpeername

perl -le 'use Socket; ($port,$addr) = sockaddr_in(getpeername(STDIN)); print inet_ntoa($addr);'

包装在反引号中或从shell脚本运行的任何东西。

您可以通过解析pfiles输出来获取它们,例如:

pfiles $$ | grep peername | head -1 | nawk '{print $3}'

编辑:

这是回应Nemo对启动的进程数的正确评论的一种简便方法:

pfiles $$ | nawk '/peername/ {print $3;exit}'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM