← Back to team overview

sslug-teknik team mailing list archive

Bedre `netstat -p' [var: Re: SSHD start problem]

 

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Lars Knudsen <lk@xxxxxxxxxxxxxxxxxxx> writes:

> > error: bind: Address already in use
> > fatal: Bind to port 22 failed: Transport endpoint is not connected.
> 
> Der er et eller andet program (måske en gammel sshd) der bruger porten,
> [...]
> Ellers kan du checke med en netstat -a om det er et andet program
> der har beslaglagt porten.

Nej, `netstat -a' vil bare vise _at_ porten er beslaglagt, men ikke hvilket
program der er skyld i det.  Det sidste kan man derimod se med

   # fuser -v 22/tcp      # Vis hvem & hvad der lige nu besætter TCP-port 22

Hvis man vil se programmerne for alle åbne TCP-forbindelser, kan man bikse
sig en lille pipeline sammen, der kalder fuser(1) med alle portnumrene fra
`netstat -at' (`-t' = vis kun TCP-forbindelser, ikke UDP og lokale sockets):

   # netstat -at | awk '{print $4}' | cut -d: -f2 -s | grep -v '^listen$' \
                 | sort -n | uniq | awk '{print $0 "/tcp"}' | xargs fuser -v

Det er man i hvert fald nødt til i lidt ældre Linux-distributioner, fx RedHat
5.2.  I RedHat 6.0 har netstat(1) fået sig et interessant `-p'-argument.  Det
skulle netop vise PID og programnavne for forbindelserne.  Desværre mangler
mange af programnavnene, i hvert fald med netstat'en i net-tools-1.52-2 på
Alpha-Linux ("netstat 1.38 (1999-04-20)").  Så dér er kombinationen med fuser
stadig nyttig.

- -- 
Ulrik Dickow / ukd@xxxxxxxxxx / Phone +45 36 39 08 00 / Fax +45 36 77 03 01 
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v0.9.9 (GNU/Linux)
Comment: By Mailcrypt 3.5.2 and GNU Privacy Guard, http://www.gnupg.org

iD8DBQE3uyst9u7fIBhLxNkRAhZWAKD5jnwxhPsCDLtB3Zw6T5vBiPYL+ACg0EDm
/8PZDbLtxX7zlTwnbiKyiVs=
=B2Om
-----END PGP SIGNATURE-----


Follow ups

References