연결이 끊겼을 때 AP에 다시 연결하는 bash 스크립트 만들기

연결이 끊겼을 때 AP에 다시 연결하는 bash 스크립트 만들기

우분투에서 WIFI에 문제가 있습니다. 시스템을 업데이트하려고 했지만 여전히 동일한 현상이 발생합니다. 갑자기 라우터와의 연결이 끊어지고 WIFI 막대를 누르면 시스템이 내가 필요한 AP를 감지하지 못합니다. "WIFI 활성화" 옵션을 선택 취소한 다음 다시 확인하여 작동하는지 확인하면 자동으로 다시 연결됩니다.

어떤 이유로든 PC가 라우터에서 연결이 끊어졌을 때를 감지하고 연결이 끊어지면 Wi-Fi를 비활성화한 다음 활성화하는 bash 스크립트를 만들 생각입니다. 내 말은, 연결 재설정을 자동화하는 것이 가능하다는 뜻인가요?

내 생각엔 이걸 꼭 사용해야 할 것 같아

nmcli nm wifi off
nmcli nm wifi on

하지만 PC가 WIFI에서 연결이 끊어졌는지 어떻게 스크립트에 알릴 수 있습니까?

답변1

생각보다 간단합니다.

#!/bin/bash

if ! [ "$(ping -c 1 google.com)" ]; then
    nmcli nm wifi off
    nmcli nm wifi on
fi

그런 다음 이 스크립트에 대한 cron 작업을 사용하여 매분마다 실행할 수 있습니다.

답변2

대답은 정확하지만 다음 사항을 고려해야 합니다.

1) 사용자가 로그인했는지 여부에 관계없이 작동합니다. 이는 응용 프로그램에 따라 원하는 동작일 수도 있고 아닐 수도 있습니다.

2) 재연결이 1분 이상 지연되면 절대 연결되지 않습니다...

저는 그래픽 세션의 시작 스크립트로 실행할 수 있고 좋은 후보가 될 수 있는 간단한 스크립트를 작성했습니다. 내 유틸리티 SLogger를 따라갈 수 있도록 출력을 파일로 리디렉션합니다.

여기에 스크립트가 있습니다. --- 당신은 결코 알 수 없습니다.

#!/bin/bash
while /bin/true; do
    if ! [ "$(ping -c 1 google.com)" ]; then
        echo "Warning: connection lost at $(date) -- restart"  
        nmcli nm wifi off
        sleep 5
        nmcli nm wifi on
        sleep 60
        if ! [ "$(ping -c 1 google.com)" ]; then
             echo "Waiting for connection going up at $(date)"
             sleep 60
        else 
             echo "Connection on at $(date)" 
        fi
#    else
#        echo "Connection OK on $(date)"
    fi
sleep 60
done

관련 정보