linux - विशाखापत्तनम बंदरगाह




लिनक्स में एक निश्चित प्रक्रिया द्वारा खोले गए बंदरगाहों की जांच कैसे करें? (5)

मान लीजिए कि प्रक्रिया का पीआईडी ​​पहले ही ज्ञात है


आप netstat कमांड लाइन उपकरण का उपयोग -p कमांड लाइन तर्क के साथ कर सकते हैं:

-p (लिनक्स):

प्रक्रिया: दिखाएं कि कौन सी प्रक्रियाएं सॉकेट का उपयोग कर रही हैं (विंडोज के तहत -b के समान)। ऐसा करने के लिए आपको जड़ होना चाहिए।

उदाहरण अनुभाग यह उदाहरण देता है:

आईडी $PID साथ एक प्रक्रिया द्वारा खुलने वाले सभी बंदरगाहों को प्रदर्शित करने के लिए:

netstat -ao | grep '\b'$PID'\b'

आप नीचे दिए गए आदेश का उपयोग कर सकते हैं:

lsof -i -P |grep pid

एलएस के साथ आप प्रक्रिया मार्ग जान सकते हैं।

उदाहरण:

fuser 25/tcp

फ्यूसर कमांड का कहना है कि प्रक्रिया है: 2054

ls -l /proc/2054/exe

प्रक्रिया पथ प्रकट होता है

से निकाला गया: https://www.sysadmit.com/2018/06/linux-que-proceso-usa-un-puerto.html

छवि उदाहरण


कुछ एम्बेडेड डिवाइस या लिनक्स के पुराने संस्करण के साथ, समस्या --process नहीं है - --process या -p विकल्प उपलब्ध हैं।

निम्नलिखित स्क्रिप्ट अपने आईपी और पोर्ट के साथ प्रक्रिया दिखाती है, आपको जड़ होना चाहिए।

#!/bin/bash

for protocol in tcp udp ; 
do 
    #echo "protocol $protocol" ; 
    for ipportinode in `cat /proc/net/tcp | awk '/.*:.*:.*/{print $2"|"$3"|"$10 ;}'` ; 
    do 
        #echo "#ipportinode=$ipportinode"
        inode=`echo "$ipportinode" | cut -d"|" -f3` ;
        if [ "#$inode" = "#" ] ; then continue ; fi 
        lspid=`ls -l /proc/*/fd/* 2>/dev/null | grep "socket:\[$inode\]" 2>/dev/null` ; 
        pid=`echo "lspid=$lspid" | awk 'BEGIN{FS="/"} /socket/{print $3}'` ;
        if [ "#$pid" = "#" ] ; then continue ; fi
        exefile=`ls -l /proc/$pid/exe | awk 'BEGIN{FS=" -> "}/->/{print $2;}'`
        #echo "$protocol|$pid|$ipportinode" 
        echo "$protocol|$pid|$ipportinode|$exefile" | awk '
            BEGIN{FS="|"}
            function iphex2dec(ipport){ 
                ret=sprintf("%d.%d.%d.%d:    %d","0x"substr(ipport,1,2),"0x"substr(ipport,3,2),
                "0x"substr(ipport,5,2),"0x"substr(ipport,7,2),"0x"substr(ipport,10,4)) ;
                if( ret == "0.0.0.0:0" ) #compatibility others awk versions 
                {
                    ret=        strtonum("0x"substr(ipport,1,2)) ;
                    ret=ret "." strtonum("0x"substr(ipport,3,2)) ;
                    ret=ret "." strtonum("0x"substr(ipport,5,2)) ;
                    ret=ret "." strtonum("0x"substr(ipport,7,2)) ;
                    ret=ret ":" strtonum("0x"substr(ipport,10)) ;
                }
                return ret ;
            }
            { 
            print $1" pid:"$2" local="iphex2dec($3)" remote="iphex2dec($4)" inode:"$5" exe=" $6 ;  
            }
            ' ; 
        #ls -l /proc/$pid/exe ; 
    done ; 
done

आउटपुट इस तरह है:

tcp pid:1454 local=1.0.0.127:5939 remote=0.0.0.0:0 inode:13955 exe=/opt/teamviewer/tv_bin/teamviewerd
tcp pid:1468 local=1.1.0.127:53 remote=0.0.0.0:0 inode:12757 exe=/usr/sbin/dnsmasq
tcp pid:1292 local=0.0.0.0:22 remote=0.0.0.0:0 inode:12599 exe=/usr/sbin/sshd
tcp pid:4361 local=1.0.0.127:631 remote=0.0.0.0:0 inode:30576 exe=/usr/sbin/cupsd
tcp pid:1375 local=1.0.0.127:5432 remote=0.0.0.0:0 inode:12650 exe=/usr/lib/postgresql/9.3/bin/postgres

netstat --all --program | grep '3265'
  • - सभी श्रवण सुनना और गैर-सुनना सॉकेट दिखाएं।
  • --program पीआईडी ​​और प्रोग्राम का नाम दिखाता है जिसमें सॉकेट संबंधित है।

आप एनएमएपी जैसे पोर्ट स्कैनर का भी उपयोग कर सकते हैं।






networking