[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Cybercable, SN3200, et dhcpcd



On Tue, Mar 30, 1999 at 01:31:44PM +0200, Stephane Bortzmeyer wrote:
> Autrement, il faut suivre le conseil de Christian. Un coup de 'netstat
> --all --inet' vous donnera une bonne idée de tous les démons qui vous
> restent.

J'ai écrit un petit script qui affiche le PID et le nom des process qui
sont en écoute sur un port passé en argument (numero de port ou nom du
service). Ce script utilise les infos de /proc et ne devrait donc
fonctionner qu'avec un noyau 2.2.x
En fait, pour les démons "standards", les services en clair apparaissent
dans la commande netstat. Mon script n'est donc pas très utile pour
ceux-ci. Mais j'étais curieux de trouver quels étaient les process en
écoute sur les autres ports (non listés dans /etc/services), donc j'ai
écrit ce script.

Ex. d'utilisation :
# check_port www
PID     NAME
21393   apache
21394   apache
21395   apache
21396   apache
21397   apache
31550   apache
6638    apache
9188    apache


#!/bin/bash

PORT=$1

if [[ "X$PORT" = "X" ]]
then
  echo "Usage: check_port [port_number | service_name]"
  exit 1
fi

if [[ "${PORT/*[0-9]/}" = "$PORT" ]]
then
  PORT=`awk -v serv=$PORT '$1 == serv && $2 ~ /tcp$/ {sub(/\/tcp/,"",$2); print $2}' /etc/services`
fi

PORT_HEX=`echo "obase=16;$PORT" | bc`
PORT_HEX=`printf "%04X" 0x$PORT_HEX`

INODE=`cat /proc/net/tcp | awk -v port=:$PORT_HEX '$4 == "0A" && $2 ~ port {print $10}'`

for i in $INODE
do
  PID=`for fd in /proc/[0-9]*/fd/*
  do
    ls -l $fd 2> /dev/null
  done | grep "socket:\[$i\]" | awk -F '/' '{print $3}'`
done

echo "PID	NAME"
for i in $PID
do
  echo -e "$i	\c"
  cat /proc/$i/status | awk '$1 ~ /^Name/ {print $2}'
done | uniq


-- 
"How do you pronounce SunOS?"  "Just like you hear it, with a big SOS"
	-- dedicated to Roland Kaltefleiter


Reply to: