답변:
나는 대부분의 네트워크 자동 구성 및 연결 관리 데몬을 비활성화하고 직접 처리하는 것을 선호합니다. 다음은 네트워크가 있고 연결이 끊긴 와이파이 드라이버 나 전원 문제가없는 한 연결을 유지하는 (bash) 스크립트입니다. N 초마다 라우터를 핑 (ping)하는 것이 아이디어가 실패하면 다시 연결하십시오.
#!/bin/bash
# make sure we aren't running already
what=`basename $0`
for p in `ps h -o pid -C $what`; do
if [ $p != $$ ]; then
exit 0
fi
done
# source configuration
. /etc/wifi.conf
exec 1> /dev/null
exec 2>> $log
echo $(date) > $log
# without check_interval set, we risk a 0 sleep = busy loop
if [ ! "$check_interval" ]; then
echo "No check interval set!" >> $log
exit 1
fi
startWifi () {
dhclient -v -r
# make really sure
killall dhclient
iwconfig $wlan essid $essid
dhclient -v $wlan
}
ifconfig $eth down
ifconfig $wlan up
startWifi
while [ 1 ]; do
ping -c 1 $router_ip & wait $!
if [ $? != 0 ]; then
echo $(date)" attempting restart..." >> $log
startWifi
sleep 1
else sleep $check_interval
fi
done
따라서이 /etc/wifi.conf
경우 다음이 포함될 수 있습니다.
router_ip=192.168.0.1
log=/var/log/wifi.log
wlan=wlan0
eth=eth0
essid=someNetwork
check_interval=5
이것은 모두 암호화되지 않은 열린 네트워크를 가정합니다 (그렇지 않으면 적절한 명령을 추가해야합니다). 필자는 pi를 포함하여 다양한 Linux 시스템에서이 접근 방식을 사용했으며 완벽하게 작동합니다. 주기적으로 휴면 상태가 되더라도 (파이는 어쨌든) 시스템을 무기한 온라인 상태로 유지합니다.
적절한 검사 간격은 3-5 초입니다. 이 활동은 시스템 리소스에 전혀 영향을 미치지 않습니다.
먼저 네트워크 자동 구성을 비활성화해야합니다 . ifplugd
및 기타 네트워킹 데몬을 포함 하면 다음 작업에 방해가됩니다.
Raspbian에서 자동 구성 네트워킹을 비활성화하려면 어떻게해야합니까?
나는 실제로 사용했다 apt-get remove ifplugd
.
부팅시 네트워킹을 시작하려면 (pi 헤드리스를 사용하기 때문에) 다음에서 raspbian에서 실행되도록 설정했습니다 /etc/rc.local
.
wifi_mod=`lsmod | grep 8192cu`
if [ "$wifi_mod" ]; then
echo "Starting wifi..."
/usr/bin/nice -n -10 /usr/local/bin/wifi &
else
echo "Starting ethernet..."
/sbin/ifconfig eth0 up
/sbin/dhclient eth0
fi
/usr/local/bin/wifi
스크립트입니다. 무엇 nice
을위한 것인지 모른다면를 읽으십시오 man nice
.
의 요점은 if
너무 와이파이가 시작됩니다 - 내 와이파이 동글 파이에 연결되어있는 경우 8192cu 모듈이이 시점에서 커널이로드 될 것입니다. 그렇지 않은 경우 이더넷이 연결되어 있고 사용되어야한다고 가정합니다 (그렇지 않은 경우 dhclient는 중단되고 네트워크 액세스가 없음).
이것이 작동하려면 아마해야 할 것입니다
따라서 부팅시 네트워크에 헤드리스 파이를 가져 와서 유지합니다. 로그인하지 않고 달리면서 eth로 전환하는 방법을 원한다면 , wifi 동글을 꺼내기위한 udev 규칙으로 무언가를 할 수 있습니다.
rc.local
. WRT 로그 순환-일반적으로 로그 파일과 관련된 별도의 질문입니다 (하지만 참조 man logrotate
). 현재 해당 스크립트는 추가하지 않고 동일한 경로로 존재하는 경우 이전 로그를 복제 (덮어 쓰기)합니다. 디버깅 wifi.$$.log
을 위해 wifi.conf 파일에서 때때로 사용 했기 때문에 마지막 로그가 (거의 들리지 않게) 방해를받으며 무언가를 조정 한 후 한 세션을 다른 세션과 비교할 수 있습니다. $$
"wifi"프로세스의 pid입니다.
글쎄, 매우 간단한 해결책이 있습니다.
/etc/ifplugd/action.d/
이름을 바꿉니다.ifupdown
ifupdown.original
cp /etc/wpa_supplicant/ifupdown.sh ./ifupdown
sudo reboot
그게 다야. AP를 켜거나 켜서이를 테스트하십시오. Raspberry Pi가 올바르게 다시 연결되었음을 확인할 수 있습니다.
action_wpa -> ../../wpa_supplicant/action_wpa.sh
으므로 이것이 기본값입니까?
dhcpcd
기반 배포판이 당신이 필요 RPI3에서 실행 얻기 위해 apt-get install rcconf
및 전환 dhcpcd
에networking
나는 최근에 모든 무선 구성을 정리하는 콘솔 응용 프로그램을 우연히 발견했습니다. 이 도구를 사용하여 LAN 인터페이스를 구성 할 수도 있습니다.
sudo apt-get install wicd-curses
꽤 많은 다른 패키지를 설치하고 백그라운드에서 자체 데몬을 실행하지만 모든 것을 훨씬 쉽게 구성 할 수 있습니다. 로 실행
sudo wicd-curses
네트워크가 감지되지 않았다는 메시지가 표시되면 P
(자본은 반드시 [SHIFT] p를 사용하고) 무선 인터페이스 필드에 wlan0을 입력하고 F10을 눌러 저장하십시오.
R
목록을 새로 고칩니다.를 눌러 C
액세스 포인트에 연결 해야 할 수도 있습니다 . 유선 인 경우 LAN 인터페이스가 종료되고 무선이 켜질 가능성이 높습니다.
또한 연결을 관리하므로 어떤 이유로 든 끊어지면 구성된 무선 액세스 지점에 다시 연결됩니다.
WiFi 어댑터의 플러그를 꽂았다가 다시 꽂는 것을 테스트했습니다. 약 60 ~ 90 초가 걸리지 만 WiFi에 다시 연결됩니다 (LAN의 플러그를 뽑아야한다고 생각합니다)
그것이 도움이되기를 바랍니다!
wicd
wicd-curses
RPi 3이 무작위로 정지되었습니다. 전에 얼어 붙지 않았고 얼른 즉시 얼어 붙었습니다. 조심해!
추가 스크립트없이이 문제를 해결할 수 있습니다.
/ etc / network / interfaces에 다음을 입력하십시오.
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
로밍을 통해 인터페이스가자가 치유됩니다.
시도하십시오 netcfg
. 사용중인 배포에 대한 추가 세부 정보가 없으면 더 많은 세부 정보를 제공 할 수 없지만 원하는 작업을 수행해야합니다.
이것 에서 추출 된 또 다른 솔루션 .
먼저 wifi 설정을 구성하십시오. 다음 sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
과 같은 섹션을 추가하십시오.
network={
ssid="MyNetworkName"
psk="MyPaz0rdz"
key_mgmt=WPA-PSK
}
그런 다음 네트워크 설정 sudo vi /etc/dhcpcd.conf
:
interface wlan0
inform 192.168.1.200 # the static ip for the wifi card
static routers=192.168.1.254 # your router's ip
static domain_name_servers=192.168.1.254 # your dns, usually=your router
그런 다음 예를 들어이 스크립트 파일을 작성 하여 실행 권한을 /home/pi/reconnect.sh
부여하십시오 +x
.
#!/bin/bash
router=`ip route | awk '/default/ {print $3}'`
/bin/ping -q -c1 $router > /dev/null
if [ $? -eq 0 ]
then
true
# echo "Network OK"
else
echo "Network down, fixing..."
# ifdown --force wlan0
# sleep 5
/bin/kill -9 `pidof wpa_supplicant`
/sbin/ifup --force wlan0
/sbin/ip route add default via $router dev wlan0
/bin/mount -a
echo "wlan0 reconnected at `date`"
fi
그런 다음로 루트로 로그인하고로 루트 sudo su
crontab을 편집하십시오 crontab -e
.
이 파일의 끝에 다음 줄을 추가하십시오.
10 * * * * /home/pi/reconnect.sh
즉, "10 분마다 스크립트를 실행합니다 (루트로)"
이제 연결되어 있으면 스크립트가 종료되고 아무 일도 일어나지 않습니다. 라우터를 ping 할 수 없으면 스크립트는 wpa_supplicant를 사용하여 라우터에 다시 연결을 시도합니다.
cron 스크립트에서 에코되는 모든 것 (이 경우에는 연결이 끊긴 경우에만)이 root로 이메일로 전송됩니다. 따라서 메일 별칭과 포스트 스크립트를 구성한 경우 pi의 Wi-Fi 연결이 끊어 질 때마다 이메일을 수신 한 다음 스크립트 덕분에 성공적으로 다시 돌아옵니다.
이것은 2017 년 3 월 30 일 Raspian Jessie를 사용하여 나를 위해 일했습니다.
http://alexba.in/blog/2015/01/14/automatically-reconnecting-wifi-on-a-raspberrypi/