로그인

검색

[rpi4, wifi, ubuntu 22.04] pi4 wifi 끈길때, 재시작, 재부팅 스크립트

[rpi4, wifi, ubuntu 22.04] pi4 wifi 끈길때, 재시작, 재부팅 스크립트

 

image.png

 

 

원인

- 이번에 250GB SSD 를 장착한 이후로, wifi 끈김 현상이 발생합니다. (특히, 영상파일을 다운로드 할때)

- 우분투 서버버전이라 wifi 가 안되면, 재부팅 해야 하므로, 매우 불편합니다.

 

ssd 장착시

- usb3 포트에 연결하려고 했으나, 불가능 하네요. 구글에서 찾아보니, usb3 포트를 사용할 경우엔 wifi 5G 를 이용해야 한다고 합니다.

- usb2 포트에서는 잘 연결됩니다.

 

 

솔루션

- 와이파이 연결 끈길시, 재부팅 하거나, wifi를 재시작 하는 스크립트를 만들어서 crontab으로 실행하려고 합니다.

 

 

아래는 wifi 를 재시작 하는 스크립트 입니다.

 

ping -c2 8.8.8.8 > /dev/null            
 
if [ $? != 0 ]
then
  echo "No network connection, restarting wlan0  - $(date +%Y)-$(date +%m)-$(date +%d) $(date +%H):$(date +%M):$(date +%S)" >> wifi.txt 2>&1
  ip link set wlan0 down
  sleep 10
  ip link set wlan0 up
fi

 

아래 내용으로 업데이트 했습니다.

#!/bin/bash
wget -q --spider https://google.com
if [ $? != 0 ]
then
  sudo echo "No network connection, restarting wlan0  - $(date +%Y)-$(date +%m)-$(date +%d) $(date +%H):$(date +%M):$(date +%S)" >> /vo2/docker/script/wifi.txt 2>&1
  sudo ip link set dev wlan0 down
  sleep 120
  sudo netplan generate
  sudo netplan apply
  sudo systemctl restart systemd-networkd
fi

 

 

 

 

 

아래는 재부팅 하는 스크립트 입니다.

ping -c4 8.8.8.8 > /dev/null
 
if [ $? != 0 ]
then
  echo "No network connection, reboot  - $(date +%Y)-$(date +%m)-$(date +%d) $(date +%H):$(date +%M):$(date +%S)" >> wifi.txt 2>&1
  sudo /sbin/shutdown -r now
fi

 

 

아래 내용으로 업데이트 했습니다.

#!/bin/bash
wget -q --spider https://google.com
if [ $? != 0 ]
then
  sudo echo "No network connection, reboot  - $(date +%Y)-$(date +%m)-$(date +%d) $(date +%H):$(date +%M):$(date +%S)" >> /vo2/docker/script/wifi.txt 2>&1
  sudo shutdown --reboot 1 #System rebooting in 1 minute
  sleep 120
fi

 

 

 

 

*** if [$? != 0] 의 뜻,

- $?  ; 리눅스 명령어, 앞 명령의 결과 변수, 0 이면 정상

- !=    ; 같지 않다. 반대는 =

즉, if [$? != 0]   는 "위 실행문이 정상이 아니라면"   이라는 뜻 입니다.

 

 

 

 

추가사항

- sleep 120 을 준 이유는, wifi 재시작 또는 시스템 리부팅 과정에서 다른 작업과 충돌을 방지하기 위함입니다.

- 위 스크립트를 crontab 에 실행을 시켰습니다. 처음에는 10분 간격으로 했으나, 이것도 서로 충돌이 발생합니다.

그래서, 충분한 시간 간격으로 실행되도록 변경했습니다. (각 20분 간격)

56 * * * * /vo2/docker/script/wifi.sh             #wifi 재부팅은 매시간 56분에 실행
16 * * * * /vo2/docker/script/wifi.sh             #wifi 재부팅은 매시간 16분에 실행
36 * * * * /vo2/docker/script/wifi2.sh           #시스템 재부팅은 매시간 36분에 실행

이 게시물을

이 댓글을 삭제하시겠습니까?