[CentOS] Total Number of conecctions

Fri Dec 3 22:00:16 UTC 2010
m.roth at 5-cent.us <m.roth at 5-cent.us>

Alexander Dalloz wrote:
> Am 03.12.2010 22:27, schrieb m.roth at 5-cent.us:
>> Robert Heller wrote:
>>> At Fri, 3 Dec 2010 12:57:59 -0800 (PST) CentOS mailing list
>>> <centos at centos.org> wrote:
>>>>
>>>> I have the need to know how many connection the server has, i run this
>>>> command but i don't know how to sum all the results and get a final
>>>> number. any ideas?
>>>>
>>>> netstat -an | grep -E 'tcp|udp' | awk '{print $6}' | sort | uniq -c |
>>>> sort -n
<snip>
>>>  <the above script> | awk '{print $1;}' | tr '\n' '+'|sed 's/\+$//g'|bc
>>>
>>> The awk prints just the number, the tr replaces the newlines with +'s,
>>> the sed strips off the trailing + (from the last newline), and bc does
>>> the math.
>>
>> Why do people use awk without using it?
>> netstat -an | awk '{if ($0 ~ /tcp|udp/){ print $6;}END { print NF;}'
>> gets you the number of lines at the end. Or, to be more elegant,
>> netstat -an | \
>>   awk '{if ($0 ~ /tcp|udp/) {
>>            array[$6] += 1;
>>        }
>>        END {
>>           for ( i in array ) {
>>               print i;
>>               sum += array[i];
>>           }
>>           print sum;
>>       }'
>>
>>      mark "me? like awk? yell at Larry Wall in '94 for proselytizing
>>               perl in comp.language.awk?"
>
> Pretty correct. I hate those pipe orgies and awk usage where people just
> use it to print out a specific field. Why piping grep output into awk
> when awk itself can grep?

My point, exactly.
>
> Though Mark, I feel you miss something in your awk script. It does not
> print the value of each state.
>
> LANG=C netstat -an | awk '/tcp|udp/ { array[$6] += 1; sum += 1 } END {
> for ( i in array ) printf "%3s %s\n", array[i],i; print sum }'

Or you could just
   ...END {
          for ( i in array ) {
              print i " " array[i];
          }
          print sum;
      }
because I already did += 1 in the main body, so the contents are totalled
for that type.

        mark