2013-02-26 2 views
-1

$ countip에서 가장 높은 숫자를 추출하여 $ totalip에 복사하려고합니다. 문제는 $ totalip이 항상 0을 반환한다는 것입니다. 아무에게도 제발 도와 줄 수는 없습니다. 새로운 bash 스크립트.bash 스크립트를 사용하여 변수에서 가장 높은 값을 얻습니다.

for srcip in `cat /var/log/messages | grep "WACSLAW1 CRITICAL INCOMING" | awk '{ print $14 }'|grep -v 192.168.1. |grep -v IN=eth1 |grep -v MAC`;do 
     if (! grep "$srcip" /var/wacstemp/ids.tmp > /dev/null) ; then 
       countip=0 
       echo $srcip >> /var/wacstemp/ids.tmp 
     else 
       countip=`expr $countip + 1` 

         if [ $countip -gt $totalip ]; 
         then 
         #  echo $countip 
           countip=$totalip 
         #  echo $totalip 
         fi 
     fi 
done 
+1

에 초기 필터를 단순화 할 수있다; 거의 읽을 수 없습니다. – chepner

답변

0

당신은 업데이트되지 않습니다

countip=$totalip 

totalip 그렇지 않으면

totalip=$countip 

에 전환해야합니다.

OT : 당신은 당신의 질문의 형식을 수정하십시오

awk '/WACSLAW1 CRITICAL INCOMING/ && $14 !~ /192.168.1./ && $14 !~ /IN=eth1/ && $14 !~ /MAC/ { print $14 }' /var/log/messages 
+0

이 방법은 $ totalip가/var/log/messages에있는 모든 IP 주소의 합계를 얻고 자 할 때, ip가/var/log/messages에 몇 번이나 있는지 확인하는 것입니다. – gomesg

+0

@ gomesg 질문이 이미 해결 되었습니까? –

+0

예 Olaf Dietsche, 고맙습니다. – gomesg