Project: Create Wireless Log Problem And Repair - ON-FIX

Post Top Ad

Sunday 29 December 2019

Project: Create Wireless Log Problem And Repair

การสร้าง Log wireless เกิดปัญหา และทำการ repair ให้กลับมาเชื่อมต่ออีกครั้ง



เนื่องจากผมเกิดปัญหา Run Raspberry Pi 24/7 แล้ว wireless เกิดการเชื่อมต่อไม่ได้ โดย script ที่ผมเขียนต่อไปนี้จะอธิบายการแก้ปัญหา wireless เป็น 2 แบบ

            แบบที่ 1 คือผมจะ ping 5 ครั้ง ไปที่ ip default gateway  ทุกที่ 10 นาที  หากหลุดหมดทั้ง 5 ครั้ง
ผมจะทำการเปิดปิด wireless ใหม่เพื่อให้ wireless เชื่อมต่อใหม่ 
(แล้วทำการเขียนข้อมูลบนไฟล์ log ว่า มีการ reconnect)

            แบบที่ 2 หากเปิดปิด wireless ใหม่ครบ 3 ครั้งแล้วยัง ping ไม่เจอ (หลุดประมาณ 30 นาที) จะทำการ restart 
(แล้วทำการเขียนข้อมูลบนไฟล์ log ว่า มีการ restart)

ขั้นตอนการสร้าง และ Run Script

            1. สร้างโฟลเดอร์ชื่อ 'sh' ด้วยคำสั่ง

            sudo mkdir /home/pi/sh  

            2. สร้างไฟล์ sh ชื่อ 'reconnect.sh' ด้วยคำสั่ง

            sudo nano /home/pi/sh/reconnect.sh  

            3. code ใน 'reconnect.sh'

 
#!/bin/bash
i=0
j=0
ping=5
freeze=3
#แก้ไข default gateway ที่ทำการ ping
gateway='192.168.1.1'
while true; do
   # ตรวจทุกๆ 10 นาที
   sleep 600
   clear
   while true; do
      # ping
      sleep 3
      ping -c2 ${gateway} > /dev/null
      if [ $? != 0 ]
      then
         i=$((i+1))
         # ping 5 ครั้งหากไม่เจอให้ reset wireless
         if  [ "$i" -ge "$ping" ]
         then
  #ถ้า ping ไม่เจอทำการ restart wireless
            sudo ip link set wlan0 down
            sleep 3
            sudo ip link set wlan0 up
            i=0
            j=$((j+1))
            echo "`date +%d-%m-%Y_%H:%M:%S` : Reconnect" >> /home/pi/sh/wireless.log
            break
         fi
      else
         #ถ้า ping เจอ reset ค่า
         i=0
         j=0
         break
      fi
   done;
   #หากเปิดปิด wireless 3 ครั้งแล้วยัง ping ไม่เจอ restart raspberry pi
   if  [ "$j" -ge "$freeze" ]
   then
      ping -c2 ${gateway} > /dev/null
      if [ $? != 0 ]
      then
         echo "`date +%d-%m-%Y_%H:%M:%S` : Reboot" >> /home/pi/sh/wireless.log
         sleep 3
  sudo init 6
      else
         i=0
         j=0
      fi
   fi

done;

            4. ตั้ง script ให้ auto start ด้วย 'crontab'

           sudo crontab -e

                       4.1 เพิ่มข้อความ   
                 "@reboot sudo sh /home/pi/sh/reconnect.sh >/dev/null 2>&1"


 
# m h  dom mon dow   command
@reboot sudo sh /home/pi/sh/reconnect.sh >/dev/null 2>&1
            
            5. สามารถดู log ด้วยคำสั่ง

           sudo cat /home/pi/sh/wireless.log


No comments:

Post a Comment

Post Bottom Ad