簡體   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