9

The netstat output contains thing like...

tcp        0      0 0.0.0.0:80       221.126.149.99:51973    ESTABLISHED 23879/apache2
tcp        0      0 0.0.0.0:80        66.249.68.154:40883     ESTABLISHED 23899/apache2
tcp        0      0 0.0.0.0:80       66.249.68.81:41200      ESTABLISHED 23892/apache2
tcp        0      0 0.0.0.0:80       66.249.67.121:59355     ESTABLISHED 23905/apache2
tcp        0   4465 0.0.0.0:80       110.75.175.27:48139     ESTABLISHED 23901/apache2

I use this commands

netstat -anpt|grep apache2 |grep ESTABLISHED | awk -F "[ :]" '{print $4}'

I was not able to get the IP, any hints?

Howard
  • 19,215
  • 35
  • 112
  • 184

5 Answers5

14

This will return a list of unique IP address you're connected too:

netstat -anpt | grep apache2 |grep ESTABLISHED | awk '{ print $5 }' | cut -d: -f1 | sort -u

Well I think I need to change my glasses also =P

jyz
  • 6,011
  • 3
  • 29
  • 37
3

You may try

netstat -anpt|awk 'BEGIN {FS="[ :]+"};/ESTABLISHED/ && /apache/{print $6}'  

For some reason I am counting 6 fields, while everybody else is counting 4 ... Should I buy new glasses? :)

HTH!

Dr. belisarius
  • 60,527
  • 15
  • 115
  • 190
  • You're not the only one. I'd recommend moving the grep patterns inside awk. – glenn jackman Sep 12 '10 at 11:41
  • @glenn jackman Agree. Edited. Sometimes, in the well formed questions, when the OP posts his solution, I feel it's better to modify the minimum possible, because it makes the bug easier to understand. May be I'm wrong – Dr. belisarius Sep 12 '10 at 14:31
2

You're really close. You just need to change your field separator regular expression so that it's not considering a single whitespace or colon as the field separator:

netstat -anpt|grep apache2 |grep ESTABLISHED | awk -F "[ :]*" '{print $4}'
Kaleb Pederson
  • 45,767
  • 19
  • 102
  • 147
2
netstat -anpt | awk '/apache2/&&/ESTABLISHED/{sub(/:*/,"",$4);print $4} ' 
ghostdog74
  • 327,991
  • 56
  • 259
  • 343
-1
 netstat -ant | grep 80 | wc -l
mrhassell
  • 125
  • 2