문제

이 출력의 왼쪽에있는 숫자 중 하나가 25보다 높은 경우 활성화하고 이메일을 보내는 경고를 설정하고 싶습니다.

내 Bash 스크립트에서 현재 수신 한 출력 :

  3 00:05:00:E7:5A:EA
  3 00:0C:85:F2:F8:4E
  3 00:11:92:21:87:14
  3 00:17:C5:69:49:A1
  3 00:1A:E3:8C:E4:1A
  3 00:1D:A2:E7:BC:24
  3 00:26:98:14:91:05
  3 44:03:A7:C0:0D:26
 13 C0:62:6B:AE:6A:5D
 26 E8:B7:48:36:8C:AE

위는 케이블 플랜트에서 가장 많은 ARP 항목 (공개 IPS 전용)이있는 상위 10 개의 MAC 주소입니다.

예를 들어: 하단 MAC 주소는 26 세이기 때문에 "Alert : Valid Info Here"의 주제로 나에게 보내는 경고를 트리거하고 이메일 경고해야합니다.

내 배쉬 스크립팅 능력의 범위는 기본적으로 명령 그룹 이므로이 명령에 대한 진정한 도움이 필요합니다.

도움이 되었습니까?

해결책

다음 스크립트를 시도 할 수 있습니다.

#!/bin/bash

msg=
count=0
while read line; do
    read freq mac <<< $line
    if (( $freq > 25 )) ; then 
        (( count ++ ))
        msg="$msg$line"$'\n'
    fi
done 
mail your@email.com -s "Alert: $count mac with more than 25 entries" <<< $msg

스크립트에서 출력을이 스크립트의 표준 입력으로 리디렉션합니다 (일반적으로 파이프 사용 |) : your_script.sh | the_above_script.sh

더미 이메일 주소를 변경하십시오. 그런 다음 피사체의 줄 수와 신체의 전체 라인이있는 이메일을 받게됩니다.

다음은 삽입 한 예제 실행입니다 echo 직전에 mail 명령

$ cat message
  3 00:05:00:E7:5A:EA
  3 00:0C:85:F2:F8:4E
  3 00:11:92:21:87:14
  3 00:17:C5:69:49:A1
  3 00:1A:E3:8C:E4:1A
  3 00:1D:A2:E7:BC:24
  3 00:26:98:14:91:05
  3 44:03:A7:C0:0D:26
 13 C0:62:6B:AE:6A:5D
 26 E8:B7:48:36:8C:AE
$ ./t.sh < message
mail your@email.com -s Alert: 1 mac with more than 25 entries <<< 26 E8:B7:48:36:8C:AE

사용할 수있는 경우 awk, 여기 더 짧은 솔루션이 있습니다

< message.txt awk '{ if ($1>25) exit 1 }'  ||  mailx -s "Random Subject" myemail@mydomain.com < message.txt
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top