자동 재 연결 WIFI 방법 이해


9

이 게시물 에서 WIFI 동글을 다시 연결하는이 방법을 찾았 습니다 . 그러나 시도하고 구현하기 전에 작동 방식을 분명히하고 싶습니다.

  1. 으로 이동 /etc/ifplugd/action.d/하여 ifupdown파일 이름을 바꿉니다 ifupdown.original.
  2. 다음을 수행하십시오 cp /etc/wpa_supplicant/ifupdown.sh ./ifupdown.
  3. 드디어: sudo reboot
  1. 언제 /etc/ifplugd/action.d/ifupdown호출됩니까?
  2. 이 스크립트는 /etc/wpa_supplicant/ifupdown.sh본질적으로 평신도 용어로 무엇을 합니까? 언제 호출 되나요?
  3. 1-3 단계를 수행하면 WIFI가 작동하지 못하게하는 다른 예상치 못한 문제가 발생할 수 있습니까? 도달하기 어려운 위치에 키보드와 모니터가없는 SSH를 통해 Raspberry PI에서이를 구현하려고합니다.

Google에 다양한 비트를 시도했지만 비트가 손실되었습니다!

답변:


0

ifplugd는 이더넷 커넥터의 제거 또는 재 연결을 감지하기위한 것입니다. 연관된 디렉토리 /etc/ifplugd/action.d/는 예를 들어 커넥터가 연결되거나 제거 될 때 호출되는 스크립트를 호스트합니다.

프로세스의 2 단계에서는 커넥터를 삽입 (또는 제거) 할 때 wpa 연결이 다시 협상되고 연결이 WPA라고 가정합니다. 설명하는 이름 바꾸기 / 복사 프로세스는 기존 ifupdown 스크립트에서 수행 된 기존 처리를 비활성화합니다. 무시해도됩니다. 기존 ifupdown 스크립트 (예 : 끝에)를 추가하여 /etc/wpa_supplicant/ifupdown.sh를 호출하는 것을 고려할 수도 있지만 기존 스크립트에 이미있는 내용 (이것은 단순함)을 이해하는 데 달려 있습니다.

커넥터의 물리적 연결 해제를 처리하는 대신 Wi-Fi 연결이 끊어졌을 때 또는 다시 연결하기 만하려면 다음을 사용하는 것이 좋습니다.

https://raw.githubusercontent.com/dweeber/WiFi_Check/master/WiFi_Check

이 스크립트는 강력하고 대부분 무해하며 트릭을 강력하게 수행해야합니다.


0

짧은 버전

  1. dudek가 이미 답변했습니다. 해당 디렉토리는 시스템에 연결하거나 연결을 끊는 방법을 시스템에 알려주는 스크립트에 사용됩니다.

  2. 문제의 스크립트를 이해하는 방법에 대한 설명은 "긴 버전"을 참조하십시오. 기본적으로 일부 검사를 실행하고 일부 externall 함수를로드 한 후 start명령 시퀀스를 실행해야하는지 stop또는 오류 및 종료를 수행해야하는지 검사합니다 .

  3. 예, RPi가 좋아하지 않는 방식으로 네트워킹 구성을 만지면 원격 액세스를 차단할 수 있습니다. 과거에는 RPi에서 네트워킹 구성을 대략 만져 새로 설치를 시작하는 것이 더 간단했습니다. 조심해서 RPi를 일시적으로 현지에 로그인하기 쉬운 위치로 옮기는 것을 고려하십시오.

긴 버전

내 RPi 에서이 파일을 살펴보면 주석이 잘 달렸으며 많은 외부 함수 호출에 사용되지 않습니다. 그러나 당신은 평신도 용어를 요구했기 때문에 당신이 나와 같은 RPi 사용자 인 것처럼 보이기 때문에 이러한 종류의 스크립트를 이해하는 방법을 설명하기 위해 최선을 다하겠습니다. 나는을 벌써 온 이상 writen 한 내용을 확인 와나 수 RPI StackExchange 이 서버 요구 사항에 유용한 다른 트릭이있을 수 있습니다으로 숨겨진 무선 네트워크에 자동 reconection을 위해.

귀하의 질문에 대한 답변을 돕기 위해 약간의 쉘 스크립팅 구문 설명이 있습니다.

~.sh스크립트 에서는 이와 같이 정의 된 함수를 찾는 것이 일반적입니다 .

function_name () {
    echo "doing stuff for function_name"
}

function_name스크립트에서 후자를 통해 , 때로는 다른 함수 내에서 호출됩니다. 함수, 스크립트 파일 및 if 문은 실행할 명령 목록 일뿐입니다. 사이의 물건 기능의 경우 {와는 }실행과의 경우 if사이의 물건 문에서도 then하고 fi실행하고 instences에서 else또는 elif내에서 사용되는 if조건부 문에서도.

파일을 위해 우리라는 기능이 있습니다 disecting하고 do_start, do_stop다른 파일에 정의 된 일부 기능 ... "이러한 다른 기능을 definded 무엇 파일이?" 또는 "스크립트 a가 파일 b에서 함수를로드하는지 어떻게 알 수 있습니까?" 먼저 대답해야 할 두 가지 질문이 있습니다.

라인 주위 48/etc/wpa_supplicant/ifdown.sh주석 처리 라인 (와 즉 라인 beguining있다 #simble, 이들은 주로 ... 스크립트 intrupriter 무시)와 source functionscoventently 다음 몇 줄이 'perpos 의도 labbling가 ~

# source functions
if [ -f /etc/wpa_supplicant/functions.sh ]; then
    . /etc/wpa_supplicant/functions.sh
else
    exit
fi

이것은 스크립팅 동작의 좋은 예입니다. 파일이 있다고 가정하기 전에 파일이 있는지 확인합니다.

첫 번째 비트 if [ -f는 정의 된 파일 경로에서 파일을 확인하는 것입니다. 그리고 then경로를 통해 정의 된 파일을 통해 파일의 현재 로드 내용 source( source명령의 약자 는 .있지만 스크립트에서 사용하지 않는 것이 좋습니다 cp. 다음으로 else해당 파일을 찾을 수없는 경우 스크립트 exit 0상태로 종료 0하십시오. 그런 다음 첫 번째 if통계가 fi통과되지 않으면 조치가 종료됩니다 . 즉, /etc/wpa_supplicant/functions.sh가 그렇지 않은 경우그런 다음 종료하고, 그렇지 않으면 해당 기능을로드하고 처리를 계속하십시오. 값이나 파일이 존재하는 경우 이러한 종류의 이중 검사는 다른 스크립트뿐만 아니라 다른 스크립트, -f파일 -n검사, 문자열 길이 -x검사, 파일이 있는지 여부뿐만 아니라 파일이 있는지 검사합니다. 스크립트를 실행하는 사용자에게 정의 된 파일에 대한 실행 권한이있는 -s 경우 파일이 비어 -n있는지 확인하고, 문자열이 비어 있는지 또는 null값 이 아닌지 확인하고, 문자열에서 =문자열 (또는 값)을 비교합니다 if. if통계가있는 Linux의 쉘 및 bash 스크립트 elif에는 다른 것이 있지만 다른 날입니다. 이 스크립트에는 다음과 같은 다른 트릭이 사용됩니다.if온라인과 같은 ||"or", &&"and"및 !"not"연산자와 같은 문장 55~

# quit if executables are not installed
if [ ! -x "$WPA_SUP_BIN" ] || [ ! -x "$WPA_CLI_BIN" ]; then
    exit 0
fi

에 의해 정의 된 파일이있는 경우 ~ 간단하게 상태를 넣어하는 $WPA_SUP_BIN것입니다 하지 실행 파일 또는 의해 정의 된 파일 $WPA_CLI_BIN입니다 없는 상태로 실행하고 종료 0더 처리하지 않고. 이것들은 처음에는 복잡해 보일 수 있지만 좀 더 인간적인 구문으로 큰 소리로 읽는 것은 처음 배울 때, 간단한 것을 배울 때 도움이 될 수 있으며 #복잡한 것을 위해 주석을 추가 하는 것은 학습하거나 주제에 다시 올 때 정말 도움이됩니다.

파일 내부에서 무엇을 호출했는지 확실하지 않은 경우 내부에서 제공되는 파일도 검사해야 ifupdown.sh합니다. 나는 좋을 것 nano /etc/wpa_supplicant/functions.sh다음 사용 ^w또는 Ctrl+w당신이 더 많은 약을 알고 싶은 것을 함수의 이름을 주위를 검색 할 수 있습니다. 어떤 작업이이 스크립트를 호출하는지와 functions.sh대부분의 퍼즐 퍼즐 의 충돌 이 발견되기 때문입니다.

이제 통계가 시작 135되는 곳에서 조금 다른 '라운드 라인'을 case잃어 버렸습니다. 이러한 유형의 진술은 opearation을 해독하는 데 사용할 수있는 sertain 구조를 가지고 있습니다.

case $some_variable in
    start)
         echo "The word [start] was detected in \$some_variable"
    ;;
    stop)
         echo "The word [stop] was detected in \$some_variable"
    ;;
    *)
         echo "The word [$some_variable] was detected in \$some_variable but not understood"
    ;;
esac

기타와 마찬가지로 위의 예에서 case문에서도 우리가 본질적 내용을 검색하는 $some_variable, 즉 핵심 단어가 defiened 위해를 start또는 stop과 키워드 후 발견되면 문제 명령을 trailling 사이에서 발견 )하고 preseading ;;그 다양한 키를 취할 differant 작업을 sepperate하는 역할 단어가 발견되었습니다. 일부 스크립트에서는 루프 case내에서 이러한 명령문을 찾을 수 for있지만 다른 날에도 적용됩니다.

의 경우 case내 문 ifupdown.sh스크립트 우리는 먼저 일치하고 start또는 stop내 상태를 $MODE변수 사용하는 $PHASE경우에 맞게 값을 pre-up또는 post-up명령의 순서를 호출해야 하거나 경우 생성 pre-down또는 post-down명령의 시퀀스가 대신 호출해야합니다. niether start또는 stop감지 된 위치가 없으면 오류가 기록되고 인쇄되며 스크립트는 1오류 상태와 함께 종료됩니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.