[英]TelnetClient (Apache Commons Net 3.7.2 API) connected solaris10 but can not load ~/.bash_profile
[英]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.