किसी एप्लिकेशन द्वारा किन पोर्ट का उपयोग किया जाता है [डुप्लिकेट]


11

मैं एक ऐसे एप्लिकेशन का परीक्षण कर रहा हूं जो अपने स्वयं के पोर्ट खोलता है (इन पोर्ट के लिए सर्वर के रूप में कार्य करता है, इसलिए उस पोर्ट पर सुनता है) और जहां एक ही एप्लिकेशन अन्य एप्लिकेशन (इन पोर्ट के लिए क्लाइंट के रूप में कार्य करता है) से बाध्य पोर्ट से कनेक्ट होता है।

मैं एक सिंहावलोकन प्राप्त करना चाहता हूं कि कौन से अनुप्रयोग बनाता है और किन अनुप्रयोगों और बंदरगाहों से जुड़ता है।

मैं यह कैसे कर सकता हूँ?

जवाबों:


17

आप इसके लिए उपयोग कर सकते हैं netstat। उदाहरण देखें (मैं के लिए grepped ssh):

netstat -putan | grep ssh
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1725/sshd
tcp        0      0 1.2.3.4:45734           1.2.3.5:22              ESTABLISHED 2491/ssh
tcp6       0      0 :::22                   :::*                    LISTEN      1725/sshd

स्पष्टीकरण:

मैं अक्सर मापदंडों का उपयोग करता हूं -putan(क्योंकि वे याद रखने में सरल हैं)।

  • -p: आवेदन / प्रक्रिया के पीआईडी ​​दिखाएं
  • -u: udp पोर्ट / कनेक्शन दिखाएं
  • -t: tcp पोर्ट / कनेक्शन दिखाएं
  • -a: सुनने और सुनने वाले दोनों को सॉकेट दिखाना
  • -n: संख्यात्मक आउटपुट (होस्टनाम आदि के लिए DNS लुकअप न करें)

उपरोक्त आउटपुट में, आप देखते हैं कि सभी नेटवर्क इंटरफेस पर पोर्ट पर sshdपीआईडी 1725सुनने के साथ एक ssh डेमॉन प्रक्रिया 22( 0.0.0.0) है। पोर्ट नंबर पर 2491आईपी-एड्रेस 1.2.3.5से जुड़ी एक ssh क्लाइंट प्रक्रिया (PID ) भी है 22, मेरा आईपी-एड्रेस है 1.2.3.4और मेरा बाहरी पोर्ट है 45734। आप देखते हैं कि कनेक्शन स्थापित है। इसलिए मैं अंदर से लॉग इन हूं ssh


पोर्ट 22 पर एक स्थापित टीसीपी कनेक्शन सफल प्रमाणीकरण का संकेत नहीं देता है। किसी भी दिशा में प्रमाणीकरण से पहले टीसीपी स्थापित किया जाना चाहिए।
jamesbtate

@Puddingfox हाँ सच है, हम बेहतर कह सकते हैं "मैं उस बंदरगाह से जुड़ा हुआ हूं", लेकिन समझ के लिए मैंने कहा "मैं लॉग इन हूं", क्योंकि यह अधिक निराशाजनक है।
अराजकता

1
hehe ... `-पुतन ' मैं इस छोटी सी वर्तनी की त्रुटि को सुधारने के लिए बहुत ललचा रहा हूँ;)
जेम्स मेर्टज़

जब आधुनिक उपलब्ध हैं तो अप्रचलित उपयोगिताओं का उपयोग क्यों करें? ss -lntp iproute2 सुइट द्वारा प्रदान की गई उपयोगिता है ।
मारियसमाटुटिया

7

एक और उपकरण जो ऐसा कर सकता है lsof:

# lsof -i -a -p 1981
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1981 root    3u  IPv4    917      0t0  TCP host.example.com:ssh (LISTEN)
# lsof -i -a -p 1981 -n
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1981 root    3u  IPv4    917      0t0  TCP 10.1.2.3:ssh (LISTEN)
# lsof -i -a -p 1981 -n -P
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1981 root    3u  IPv4    917      0t0  TCP 10.1.2.3:22 (LISTEN)
#

उपयोग किए गए विकल्प निम्नानुसार हैं:

  • -i एक प्रक्रिया के द्वारा इंटरनेट बंदरगाहों को खोलने के लिए
  • -a AND-ed होने के सभी विकल्पों के कारण
  • -p 1981 प्रक्रिया 1981 के लिए आउटपुट दिखाने के लिए
  • -n होस्टनाम लुकअप को रोकने और इसके बजाय आईपी दिखाने के लिए
  • -P सर्विस लुकअप को रोकना और इसके बजाय पोर्ट नंबर दिखाना

lsofइसका फायदा यह है कि आप इसे बड़े आउटपुट से अलग करने के बजाय जाँच करने की प्रक्रिया निर्दिष्ट कर सकते हैं। netstatसिस्टम पर अधिक भरोसेमंद रूप से उपलब्ध है, हालांकि पहले lsofकी तुलना में यह अधिक मानक होता जा रहा है।


मैं इस कमांड को चलाना चाहता हूं आवेदन को लॉन्च करने से पहले मैं मॉनिटर करना चाहता हूं लेकिन क्या मैं यह स्थापित कर सकता हूं कि इसे शुरू करने से पहले एक आवेदन क्या मिलेगा?
बाज

@ बज, यदि आप किसी एप्लिकेशन की निगरानी करना चाहते हैं तो यह शुरू हो जाता है (उदाहरण के लिए, इससे पहले कि आपको पता है कि यह पीआईडी ​​है), आपको उस straceसमाधान की कोशिश करनी चाहिए जो @olivecoder ने सुझाया था।
गौनेफॉवर


3

हमारे पास पहले से ही अच्छे उत्तर हैं, लेकिन वे केवल उन पोर्ट्स को सूचीबद्ध करते हैं जो उस समय खुले हैं जब कमांड चलती है।

strace आवेदन जीवनकाल के दौरान खोले गए कनेक्शन की निगरानी के लिए सही उपकरण है:

strace -e socket,connect,close -f -o hipchat.strace.txt hipchat

आउटपुट आपको UDP अनुरोधों की तरह अतिरिक्त जानकारी दिखाएगा और बंद लेकिन बंद किए गए कनेक्शन खोलेगा।


0

ss -a4 | less

मैं मान रहा हूं कि आप IPv4 के बारे में बोल रहे हैं ... यदि नहीं, तो आप पूर्ववर्ती कमांड में 4 को 6 से बदल सकते हैं। -a पैरामीटर सभी पोर्ट (सुनने और गैर) दिखाने के लिए है। यदि आप प्रदर्शन में नामों को हल नहीं करना चाहते हैं तो आप पैरामीटर को जोड़ सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.