NetworkManager가 자동으로 영원히 다시 연결을 시도하도록 강제하는 방법(Linux Wi-Fi)은 무엇입니까?

NetworkManager가 자동으로 영원히 다시 연결을 시도하도록 강제하는 방법(Linux Wi-Fi)은 무엇입니까?

네트워크 관리자에게 어떻게 알릴 수 있나요?Wi-Fi 네트워크에 계속 다시 연결해 보세요.영원히?

내가 제어할 수 없는 공용 WiFi 액세스 포인트에서 인터넷을 사용하려고 합니다. 왜인지는 모르겠지만 네트워크 상태가 좋지 않습니다. 연결되면 몇 시간 동안 제대로 작동합니다. 하지만 최종적으로 연결되기까지 수십~수백 번의 연결 시도가 필요합니다.

NetworkManager[565]: <info>  [1705593163.7081] device (wls6f0): Activation: starting connection 'MA:CA:DD:RE:SS_OBFUSCATED' (uuid_obfuscated)
...
NetworkManager[565]: <info>  [1705593186.8841] manager: NetworkManager state is now CONNECTING
...
NetworkManager[565]: <info>  [1705593186.8968] device (wls6f0): Activation: (wifi) connection 'SSID_OBFUSCATED 1' has security, and secrets exist.  No new secrets needed.
...
NetworkManager[565]: <info>  [1705593186.9172] device (wls6f0): supplicant interface state: disconnected -> scanning
NetworkManager[565]: <info>  [1705593186.9175] device (p2p-dev-wls6f0): supplicant management interface state: disconnected -> scanning
NetworkManager[565]: <info>  [1705593188.0184] device (wls6f0): supplicant interface state: scanning -> authenticating
NetworkManager[565]: <info>  [1705593188.0187] device (p2p-dev-wls6f0): supplicant management interface state: scanning -> authenticating
NetworkManager[565]: <info>  [1705593191.0121] device (wls6f0): supplicant interface state: authenticating -> disconnected
NetworkManager[565]: <info>  [1705593191.0122] device (p2p-dev-wls6f0): supplicant management interface state: authenticating -> disconnected
NetworkManager[565]: <info>  [1705593201.0140] device (wls6f0): supplicant interface state: disconnected -> scanning
NetworkManager[565]: <info>  [1705593201.0144] device (p2p-dev-wls6f0): supplicant management interface state: disconnected -> scanning
NetworkManager[565]: <info>  [1705593201.0592] device (wls6f0): supplicant interface state: scanning -> authenticating
NetworkManager[565]: <info>  [1705593201.0594] device (p2p-dev-wls6f0): supplicant management interface state: scanning -> authenticating
NetworkManager[565]: <info>  [1705593204.0095] device (wls6f0): supplicant interface state: authenticating -> disconnected
NetworkManager[565]: <info>  [1705593204.0098] device (p2p-dev-wls6f0): supplicant management interface state: authenticating -> disconnected
NetworkManager[565]: <warn>  [1705593212.1450] device (wls6f0): Activation: (wifi) association took too long, failing activation

불행하게도 연결이 실패한 후 NetworkManager는 시도를 중지합니다. 컴퓨터 앞에 앉아 시간 초과를 기다린 다음 아이콘을 클릭하고 SSID를 수동으로 선택해야 하기 때문에 이것은 터무니없는 일입니다. 계속해서. 오늘 아침에 한 시간 동안 이 일을 해야 했어요. 컴퓨터는 일을 자동화해야 하는 것 아닌가요? 방금 클릭봇으로 변신했습니다.

내가 원하는 것은 "이것에 연결해"라고 말한 다음 나가서 점심을 먹을 수 있는 것입니다. 이때 NetworkManager는 [a] 연결되거나 [b] 시간이 다 될 때까지 계속해서 연결을 시도할 것입니다. . 점심을 먹으러 컴퓨터를 떠날 수 있어야 하고, 돌아왔을 때 연결되는지 확인할 수 있어야 합니다. (현재 연결하라고 하면 컴퓨터로 돌아가서 NetworkManager가 유휴 상태이고 "포기함"을 깨달았습니다. ".

NetworkManager가 최종적으로 연결될 때까지 동일한 Wi-Fi 네트워크에 계속해서(영원히) 연결을 시도하도록 지시하여 이 프로세스를 자동화하려면 어떻게 해야 합니까?

답변1

덜 게으른 상태에서 계속 시도하도록 네트워크 관리자를 구성하는 방법은 모르지만, 네트워크 관리자를 모니터링하고 계속 작동하도록 하는 스크립트를 작성하는 방법은 알고 있습니다.

#!/bin/bash
set -x

IF_DEV="wls6f0"

while true; do
    date
    state=$(nmcli device status | grep "${IF_DEV} " | head -n1 | awk '{print $3}')
    if [[ "$state" == "disconnected" ]]; then
        echo "INFO: Caught NM sitting idle. Forcing it to try to reconnect again!";
        sudo nmcli device connect "${IF_DEV}"
    fi
    sleep 1;
    echo;
done

위 스크립트는 실행 시 $IF_DEV인터페이스 장치( 에서 설정)가 연결되어 있는지 확인하는 간단한 해킹입니다.

상태가 이면 disconnected네트워크 관리자에게 연결을 시도하라고 지시합니다(기본값은 이전에 연결된 네트워크에 연결을 시도하는 것입니다).

connecting그렇지 않은 경우(예: 또는 상태인 경우 connected) 1초 동안 기다렸다가 다시 확인합니다.

관련 정보