네트워크가 정상인지 정기적으로 확인하고 다시 연결하는 방법은 무엇입니까?

네트워크가 정상인지 정기적으로 확인하고 다시 연결하는 방법은 무엇입니까?

저는 세 개의 주요 사이트에 핑을 보내고 연결을 끊은 다음, 세 사이트가 모두 실패하면 다시 연결하여 네트워크가 작동하는지 주기적으로 확인하는 스크립트를 작성했습니다. X 세션이 없어도 명령줄에서 스크립트가 제대로 작동합니다. 스크립트는 다음과 같습니다.

#!/bin/bash

/usr/bin/notify-send -i 'dialog-information' 'Running CheckNetUp.sh' 'Checking whether network is up'

AtLeastOneSiteFound=false;

# Try to download three sites and indicate a site was found if they work
# as long as we can grab at least one site, we're good.
# Otherwise, we'll disconnect and reconnect.

/usr/bin/wget --spider --read-timeout=15 http://google.ca
if [ "$?" = 0 ]; then
  AtLeastOneSiteFound=true;
fi

/usr/bin/wget --spider --read-timeout=15 http://facebook.com
if [ "$?" = 0 ]; then
  AtLeastOneSiteFound=true;
fi

/usr/bin/wget --spider --read-timeout=15 http://wikipedia.org
if [ "$?" = 0 ]; then
  AtLeastOneSiteFound=true;
fi

if [ "$AtLeastOneSiteFound" = false ]; then
  # Disconnect my wifi (and, consequently, VPN)
  /usr/bin/nmcli dev disconnect wlp0s20u2
  # Bring my wifi up
  /usr/bin/nmcli con up uuid e23f4af0-7411-4f4e-8d3c-a7cd35b607e1
  # Bring my VPN up
  /usr/bin/nmcli con up uuid 6b0f8740-df8e-411e-adeb-bcf70ced772f
fi

문제는 스크립트가 Wi-Fi를 시작하려고 할 때 다음 오류 메시지와 함께 cron에서 실패한다는 것입니다.

Error: Connection activation failed: Not authorized to control networking.

온라인에서 가능한 많은 솔루션을 찾았지만 아직 성공하지 못했습니다. 가장 유망한 것은 모든 사용자가 텍스트 구성에서 비밀번호를 사용하여 Wi-Fi 및 VPN 연결 시스템에 연결/액세스할 수 있도록 허용하는 것 같지만, 이는 아무 것도 변경하지 않습니다.

편집: 스크립트는 crontab과 수동으로 실행될 때 모두 내 사용자로 실행됩니다.

답변1

와이파이?

"메인 사이트" 대신 자신의 라우터를 ping할 수 있으며, ISP의 도메인 서버나 라우터 대신 연결이 항상 사용자 쪽 어딘가에서 끊어질 가능성이 적습니다. 실제로, 스크립트 접근 방식은 훌륭할 것입니다. 점점 더 많은 간격으로 LAN 측을 계속 핑하고 연결이 끊어지는 데 시간이 얼마나 걸리는지 확인하십시오. LAN이 확실하다고 생각하는 것보다 오랫동안 작동하는 경우에만 WAN 측에 핑을 보내는 것을 고려하십시오. 그러나 특정 인터넷 DNS 서버(관리자는 동의하지 않을 수 있음)보다는 호스트 이름을 IP 주소로 교체하여 수많은 인터넷 라우터(괜찮아야 함)를 반복적으로 핑하는 것이 좋습니다.

인터넷 연결이 계속 끊어진다는 사실이 스크립트, 즉 제한된 리소스에 액세스하는 방법과 관련이 있을까요? 그런 다음 BIOS에 전원 관리가 있고(이것이 현재 커널에 어떤 영향을 미치는지 잘 모르겠습니다) 마지막으로 귀하의 질문에 대한 ISP의 응답이 있습니다. 그리고 다시 말하지만, 깨어 있는 꿈에서도 인터넷 연결 문제를 보여주기 위해 Wi-Fi를 사용하는 것을 고려하지 않았습니다.

구리 또는 광섬유를 통해 연결하십시오. 게시물을 반복하십시오.

관련 정보