速度監視スクリプト
サーバーとインターネット環境の速度監視を行うスクリプトになります。
速度監視はspeedtestコマンドを使用します。
スクリプトの概要
- speedtestコマンドの結果から速度を取得する
- 閾値を下回った場合、計測した速度をメール本文に載せて送信する
- メール送信は、sendmailコマンドを使用します
- sendmailコマンドの設定は調べてください
- 定期監視する場合は、cronで定期実行すれば良いです
- ただし、頻繁に速度監視しないほうがよいです。(他の利用者の迷惑になるので)
スクリプトの内容
#!/bin/sh
srtFrom="From: aaa@xxx.xxx" # 送信元のメールアドレスを設定
srtTo="To: bbb@yyy.yyy" # 送信先のメールアドレスを設定
DOWNLOAD_TH=150 # ダウンロードの閾値(これを下回る場合はメールを送信)
UPLOAD_TH=150 # アップロードの閾値(これを下回る場合はメールを送信)
result=`speedtest --simple --secure`
downloadSpeed=`echo $result | sed -e 's/^.*Download: \(.*\) Mbit\/s Upload: \(.*\) Mbit\/s/\1/g'`
uploadSpeed=`echo $result | sed -e 's/^.*Download: \(.*\) Mbit\/s Upload: \(.*\) Mbit\/s/\2/g'`
flagNG=0
result1=`echo "$downloadSpeed > $DOWNLOAD_TH" | bc`
if [ $result1 -eq 1 ]; then
#echo "DownloadSpeed, OK!"
:
else
#echo "False DownloadSpeed, NG!"
flagNG=1
fi
result2=`echo "$uploadSpeed > $UPLOAD_TH" | bc`
if [ $result2 -eq 1 ]; then
#echo "UploadSpeed, OK!"
:
else
#echo "False UploadSpeed, NG!"
flagNG=1
fi
echo $downloadSpeed > /opt/my/chkSpeed/downloadSpeed.txt
echo $uploadSpeed > /opt/my/chkSpeed/uploadSpeed.txt
if [ $flagNG -eq 1 ]; then
filename=$(date '+%F')chkSpeed_errors_text_ksofda.txt # 適当な一時ファイル名を指定
srtSubject="Subject: Communication speed with the Internet is slowing down"
srtText="$(date),DownloadSpeed: $downloadSpeed Mbit/s,UploadSpeed: $uploadSpeed Mbit/s"
touch /tmp/$filename
echo $srtFrom >> /tmp/$filename
echo $srtTo >> /tmp/$filename
echo $srtSubject >> /tmp/$filename
echo >> /tmp/$filename
IFS_BACKUP=$IFS
IFS='
'
i=0
for L in $srtText
do
i=`expr $i + 1 `
echo $L >> /tmp/$filename
done
IFS=$IFS_BACKUP
/usr/sbin/sendmail -t < /tmp/$filename
rm /tmp/$filename
fi