اگه لازم داشته باشیم هر مثلا ۱۵ دقیقه چک بشه آیا به اینترنت وصل هستیم یا خیر، و اگر وصل نبود یک هشدار صوتی به ما بده، میتونیم از اسکریپت زیر استفاده کنیم و اون رو توی cron قرار بدیم تا هر ۱۵ دقیقه اجرا بشه.
اسکریپت زیر برای ما چک میکنه آیا میتونیم به google.com پینگ کنیم یا نه. اگر بله، یک دستوری اجرا بشه (یک صدای کلیک) و اگر نه، یک صدای دیگه پخش بشه و نوتیفیکیشن هم بده. دستورات رو میتونید بنا به نیاز خودتون تغییر بدید.
#!/bin/bash
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
if [[ $(ping -q -c 3 google.com) == @(*3 received*) ]]; then
paplay /usr/share/sounds/freedesktop/stereo/device-added.oga
else
paplay /usr/share/sounds/freedesktop/stereo/dialog-warning.oga && /usr/bin/notify-send -i "network" "Network is down" "There is no active internet connection now"
fi
توجه کنید که بجای /run/user/1000/bus
باید userID
خودتون رو قرار بدید. با دستور id
میتونید UID
خودتون رو ببینید.
برای قرار دادن این اسکریپت در کرون (تا هر ۱۵ دقیقه اجرا بشه)، اول مجوز اجرایی به اسکریپت میدیم (با توجه به محل اسکریپت):
chmod +x ~/pingstat
و بعد برای ویرایش job های کرون، با دستور crontab -e
و اضافه کردن زمان و محل اسکریپت، اون رو به امان خدا می سپاریم:
*/15 * * * * ~/pingstat
یک اسکریپت کامل تر در اینجا وجود داره که وقتی ping میکنه اگر در دسترس نباشه یک ایمیل میفرسته! البته در ادامه مطلب این اسکریپت رو هم آوردم
# add ip / hostname separated by white space
HOSTS="cyberciti.biz theos.in router"
# no ping request
COUNT=1
# email report when
SUBJECT="Ping failed"
EMAILID="me@mydomain.com"
for myHost in $HOSTS
do
count=$(ping -c $COUNT $myHost | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }')
if [ $count -eq 0 ]; then
# 100% failed
echo "Host : $myHost is down (ping failed) at $(date)" | mail -s "$SUBJECT" $EMAILID
fi
done
حاصل سر و کله زدن های من با لینوکس