إنشاء تنبيهات البريد الإلكتروني بناءً على عتبات في باش [مغلق

StackOverflow https://stackoverflow.com/questions/19823991

سؤال

أرغب في إعداد تنبيه ينشط ويرسل بريدًا إلكترونيًا إذا كان أحد الأرقام على الجانب الأيسر من هذا الإخراج أعلى من 25.

الإخراج الذي أتلقاه الحالي من البرنامج النصي الخاص بي:

  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

أعلاه هي أفضل 10 عناوين MAC مع أكثر إدخالات ARP (IPS العام فقط) من مصنع الكابلات لدينا.

فمثلا: عنوان MAC السفلي يبلغ 26 عامًا والذي يجب أن يؤدي إلى تنبيه عبر البريد الإلكتروني الذي يرسل إليّ مع موضوع "تنبيه: معلومات صالحة هنا"

إن مدى قدرتي على البرمجة النصية هو مجموعات من الأوامر ، لذلك سأحتاج إلى بعض المساعدة الحقيقية في هذا.

هل كانت مفيدة؟

المحلول

يمكنك تجربة البرنامج النصي التالي:

#!/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