집의 연결이 인터넷에 액세스할 수 있는지 확인하세요.

집의 연결이 인터넷에 액세스할 수 있는지 확인하세요.

인터넷에 접속할 수 있는지 테스트하고 싶습니다. 내 컴퓨터가 주거용 인터넷 연결에 연결되어 있습니다. 나는 ping이것을 다음과 같이 사용하고 싶다 :

ping -q -w 1 -c 1 `ip r | grep default | cut -d ' ' -f 3` > /dev/null && echo ok || echo error

그러나 이것은 작동하지 않습니다!

제가 말했듯이 연결은 기숙사에서 제공됩니다(실제로는 대학 연결을 전달하는 것뿐입니다). 인터넷에 접속하려면~ 해야 하다인터넷 액세스를 허용하기 전에 사용자 이름과 비밀번호를 제공해야 하는 웹 브라우저를 엽니다. (저는 네트워크 구성 등에 대해 잘 모르고, 어쨌든 어떻게 설정되었는지 알 권한이 없으므로 이에 대한 자세한 정보를 제공할 수 없습니다.)

위의 코드는 실제로 인터넷에 접속할 수 없는 경우에도 "ok"를 인쇄합니다. 테스트가 실패하더라도 www.google.com. 나는 이것이 로그인 페이지로 리디렉션되고 패킷을 올바르게 다시 받고 있다고 "생각"하기 때문이라고 생각합니다.

인터넷에 접속할 수 있는지 어떻게 확실하게 확인할 수 있나요?

일부 배경

ssh주말에 집에 가서 내 방에 있는 컴퓨터에 연결하고 싶어요 . 때때로 연결이 실패하기 때문에 가끔씩 연결을 확인하고 결국 웹 브라우저를 실행하고 xdotool로그인에 사용되는 키 입력을 보내는 스크립트를 만들고 싶습니다. 원격 액세스를 허용하기 위해 연결을 다시 여는 더 좋은 방법을 알고 있다면 ssh그 방법도 적어주세요.

고쳐 쓰다:

몇 가지 예제 출력 nslookup:

$ nslookup unix.stackexchange.com
Server:         127.0.1.1
Address:        127.0.1.1#53

Non-authoritative answer:
Name:   unix.stackexchange.com
Address: 69.59.197.21

결과는 인터넷 접속 여부와 상관없이 동일합니다. (저도 여러 번 로그아웃했다가 다시 로그인하고 연결하고 연결 해제를 시도했습니다.)

ssh또한 이것은 연결 종료가 아니라는 점을 덧붙이고 싶습니다 . 얼마 지나지 않아 연결을 만들고, 작업을 수행하고, 로그아웃할 수 있었습니다. 몇 시간 동안 시도한 후에 시간 초과 오류가 발생했습니다 ssh the-IP(실제로는 IP가 동적이기 때문에 IP가 없는 계정에 가입했습니다 ssh mydomain.no-ip.org).

답변1

당신은 명령에 치명적인 실수를 저질렀습니다.

ping -q -w 1 -c 1 `ip r | grep default | cut -d ' ' -f 3` > /dev/null && echo ok || echo error

이 명령은 ip r | grep default | cut -d ' ' -f 3기본 게이트웨이를 반환합니다. 따라서 pingGoogle을 확인하는 대신 연결된 라우터를 확인합니다. 라우터는 전체 명령을 true로 만드는 패킷을 다시 보냅니다. 이것이 항상 "ok"를 반환하는 이유입니다. 인터넷 연결을 전혀 확인하지 않습니다. 하지만 밝은 면을 보세요. LAN에 연결되어 있는지 확인합니다.

어쨌든 아마도 ping -q -w 1 -c 1 google.com > /dev/null && echo ok || echo error.ip r | grep default | cut -d ' ' -f 3

답변2

이런 프로그램이 필요할 것 같네요자동 무선 네트워크.

답변3

만약 그러하다면?

if [[ $(ping -c1 -w1 google.com) ]]
then 
    echo "All good in the hood"
else
    echo "Where are my interwebs?"
fi

아니면 라인으로

if [[ $(ping -c1 -w1 google.com) ]]; then  echo "All good in the hood"; else; echo "Where are my interwebs?"; fi

답변4

내가 요청한 작업을 수행하는 유일한 방법은 임의의 웹페이지를 다운로드하여 콘텐츠가 로그인 페이지와 일치하는지 확인하는 것 같습니다.

예를 들면 다음과 같습니다:

$ wget www.google.com

인터넷에 접속할 수 있으면 Google 페이지의 HTML 콘텐츠가 다운로드되며 여기에는 다음 내용만 포함됩니다.

<!--
**
**  ZEROSHELL Captive Portal Login Page  
**
**          (Native Interface)
**
-->

<html>
<head>
<title>Web Login</title>
    ...
</html>

로그인 페이지로 리디렉션되는 경우 좀 더 우아한 솔루션을 찾고 싶지만 이는 내가 원하는 것을 잘 감지하는 것 같습니다.

관련 정보