वाईफाई को स्वचालित रूप से कैसे कनेक्ट करें?


74

मैं अपने बिजली मीटरों की निगरानी के लिए अपने पीआई का उपयोग कर रहा हूं। Edimax EW-7811UN USB अडैप्टर का उपयोग करके वाईफाई कनेक्शन द्वारा डेटा को पीसी में स्थानांतरित किया जाता है। जब वाईफ़ाई कनेक्शन गिर जाता है (रात भर, या अस्थिर कनेक्शन बंद हो जाता है), तो USB एडाप्टर अक्षम रहता है।

क्या वाईफाई एडाप्टर को फिर से प्लग किए बिना वाईफाई कनेक्शन को स्वचालित रूप से पुनरारंभ करने का एक तरीका है?

जवाबों:


31

मैं अधिकांश नेटवर्क ऑटो कॉन्फ़िगरेशन और कनेक्शन प्रबंधन डेमॉन सामान को अक्षम करना चाहता हूं और खुद से निपटता हूं। यहाँ (bash) स्क्रिप्ट है जो कि कनेक्शन को तब तक बनाए रखेगा जब तक नेटवर्क है और आपके पास एक गड़बड़ वाईफाई ड्राइवर या पावर इश्यू नहीं है; विचार राउटर को हर N सेकंड पर पिंग करने के लिए है, और यदि वह विफल रहता है, तो पुन: कनेक्ट करें:

#!/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

यह सब एक खुले अनएन्क्रिप्टेड नेटवर्क को मानता है (यदि अन्यथा, आपको उपयुक्त कमांड जोड़ना होगा)। मैंने विभिन्न लाइनक्स मशीनों पर इस दृष्टिकोण का उपयोग किया है, जिसमें पाई भी शामिल है, और यह त्रुटिपूर्ण रूप से काम करता है; यह एक प्रणाली को अनिश्चित काल तक ऑनलाइन रखेगा, भले ही यह समय-समय पर सो जाए (जो पीआई वैसे भी नहीं कर सकता)।

एक सभ्य चेक अंतराल 3-5 सेकंड है; यह गतिविधि सिस्टम संसाधनों को बिल्कुल प्रभावित नहीं करेगी।

आपको पहले नेटवर्क ऑटो-कॉन्फ़िगरेशन को अक्षम करने की आवश्यकता है , सहित ifplugdऔर अन्य नेटवर्किंग डेमन, या यह आपके प्रयासों में हस्तक्षेप करेगा:

मैं रास्पबियन पर ऑटोकॉन्फ़िगर्ड नेटवर्किंग को कैसे अक्षम कर सकता हूं?

मैं वास्तव में इस्तेमाल किया apt-get remove ifplugd

बूट पर नेटवर्किंग शुरू करने के लिए (चूंकि मैं पीआई हेडलेस का उपयोग करता हूं), मेरे पास यह सेट है कि मैं रास्पियन से चला जाऊं /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 सिर्फ बकवास करेगा और नेटवर्क एक्सेस नहीं है)।

इस काम के लिए आपको शायद करना होगा

इसलिए, यह बूट पर नेटवर्क पर एक हेडलेस पाई प्राप्त करता है और इसे वहां रखता है। यदि आप लॉग-इन किए बिना दौड़ते हुए एथ पर स्विच करने का एक तरीका चाहते थे, तो आप वाईफाई डोंगल को बाहर निकालने के लिए udv नियमों के साथ कुछ कर सकते थे।


परीक्षण के लायक लगता है। एक लिनक्स समर्थक नहीं होने के नाते- मैं स्क्रिप्ट को स्टार्टअप पर चलाने के लिए कैसे निर्धारित करूंगा- क्रोन में डाल दिया? क्या लॉग रोटेशन को भी जोड़ना संभव / आवश्यक होगा?
andig

1
@andig: मैंने स्टार्ट-अप के बारे में कुछ पैराग्राफ जोड़े हैं rc.local। WRT लॉग रोटेशन, यह एक अलग प्रश्न है जो सामान्य रूप से लॉग फ़ाइलों से संबंधित है (लेकिन देखें man logrotate)। अभी वह लिपि किसी भी पिछले लॉग को क्लोब (अधिलेखित) कर देगी यदि वह उसी पथ के साथ मौजूद है, तो नहीं। डिबगिंग के लिए मैंने कभी-कभी wifi.$$.logwifi.conf फ़ाइल में उपयोग किया है, ताकि अंतिम लॉग क्लोज़्ड हो जाए और मैं कुछ साझा करने के बाद एक सत्र की तुलना दूसरे से कर सकूं। $$"wifi" प्रक्रिया का मार्ग है।
गोल्डीलॉक्स

मुझे चिंता है कि कभी-कभी शेल स्क्रिप्ट नाजुक हो सकती हैं और अपडेट होने पर या अन्य नेटवर्किंग सॉफ़्टवेयर स्थापित होने पर तरीके देखने के लिए मुश्किल से टूट सकती हैं। बस इस दृष्टिकोण पर सावधानी बरतें।
jeremiah

3
@ जेरेमियाह: यह एक अच्छा डर है। मैंने पटकथा लिखी, इसे वर्षों से देखा और महसूस किया कि मुझे सामान्य संदर्भ की कुछ समझ है, जिसमें यह काम करता है और इसलिए मुझे इसके लिए देखने की आवश्यकता है। हालांकि, कोड स्निपेट की तुलना में समझ को पारित करना शायद कठिन है। मेरे लिए यह नेटवर्कमैनेजर के साथ काम करने की कोशिश करने के लिए एक वैकल्पिक दृष्टिकोण है, कुछ बहुत ही मूल तत्वों की स्थिति को कम करके। यह एक साधारण स्टैंड-अलोन प्रणाली की परिस्थिति में लिनक्स डिस्ट्रो स्पेक्ट्रम के पार "यह वही है जो मेरे लिए काम करता है" के समान दृष्टिकोण के साथ लोगों को पेश करने के लिए कुछ है।
गोल्डीलॉक्स

इसलिए: मैं इस पोस्ट से अवगत हूं और इसे अपडेट करने का इरादा रखता हूं अगर एक प्रमुख डिस्ट्रो स्ट्रीम (डेबिया और फेडोरा और व्युत्पन्न) कुछ ऐसा पेश करता है जो इसके साथ गड़बड़ करता है। मैं उन बिंदुओं पर भी कुछ जोर दूंगा, जिन्हें अक्षम करने की आवश्यकता है और कैसे।
गोल्डीलॉक्स

68

वैसे, एक बहुत ही सरल उपाय है:

  1. करने के लिए जाओ /etc/ifplugd/action.d/और ifupdownफ़ाइल का नाम बदलेंifupdown.original
  2. फिर करो: cp /etc/wpa_supplicant/ifupdown.sh ./ifupdown
  3. आखिरकार: sudo reboot

बस इतना ही। अपने एपी पर / बंद करके इसका परीक्षण करें; आपको यह देखना चाहिए कि आपका रास्पबेरी पाई ठीक से मेल खाता है।


2
यह सबसे सरल और सबसे प्रभावी उत्तर है। 2 आरपीआई पर परीक्षण किया गया और यह काम करता है। इस लिंक से मिला: raspberrypi.org/phpBB3/…
Mauvis Ledford

12
एक सरलीकृत प्रश्न के लिए क्षमा करें - यह काम क्यों करता है?
जेफ मीटबॉल यांग

@JeffMeatballYang, अपने प्रश्न के लिए एक नया सूत्र प्रारंभ करें।
अंडालुज

6
मेरे लिए वहाँ कोई ifupdown फ़ाइल नहीं थी, बस एक लिंक है action_wpa -> ../../wpa_supplicant/action_wpa.sh, तो शायद यह अब डिफ़ॉल्ट है?
ज़िट्राक्स

2
हां, दूसरों की तरह कहते हैं: इस पर काम नहीं करता dhcpcdआधारित distros, आदेश में इस RPI3 आप की जरूरत पर चल पाने के लिए apt-get install rcconfऔर से स्विच dhcpcdकरने के लिएnetworking
test30

21

मैं हाल ही में एक सांत्वना अनुप्रयोग भर में ठोकर खाई है जो सभी वायरलेस विन्यास को नरक से बाहर निकालता है। LAN इंटरफ़ेस को कॉन्फ़िगर करने के लिए आप इस टूल का भी उपयोग कर सकते हैं।

sudo apt-get install wicd-curses

यह काफी कुछ अन्य पैकेजों को स्थापित करेगा और पृष्ठभूमि में अपना डेमॉन चलाएगा, लेकिन यह सुनिश्चित करता है कि सब कुछ पूरी तरह से आसान हो जाए। इसके साथ चलाओ

sudo wicd-curses

यहाँ छवि विवरण दर्ज करें

यदि आपको एक संदेश मिलता है जिसमें कहा गया है कि कोई नेटवर्क प्रेस का पता नहीं Pलगाता है (तो पूंजी होना चाहिए [SHIFT] p) और वायरलेस इंटरफ़ेस फ़ील्ड में wlan0 में टाइप करें और बचाने के लिए F10 दबाएं।

  1. R सूची को ताज़ा करने के लिए।
  2. सूची को ऊपर और नीचे नेविगेट करने के लिए कीबोर्ड पर कर्सर का उपयोग करें
  3. वायरलेस कनेक्शन को कॉन्फ़िगर करने के लिए दायां दबाएं
  4. कुछ समय दबाएं और "इस नेटवर्क से स्वचालित रूप से कनेक्ट करें" जांचें
  5. फिर से कुछ बार दबाएं और कुंजी क्षेत्र में अपना पासवर्ड टाइप करें
  6. बचाने के लिए F10 दबाएं

यहाँ छवि विवरण दर्ज करें

Cएक्सेस पॉइंट से कनेक्ट करने के लिए आपको प्रेस करना पड़ सकता है । यदि आपको तार दिया गया था, जो कि लैन इंटरफ़ेस को मार देगा और वायरलेस लाएगा।

यह कनेक्शन को भी प्रबंधित करता है इसलिए यह किसी भी कॉन्फ़िगर किए गए वायरलेस एक्सेस पॉइंट को फिर से कनेक्ट करेगा यदि यह किसी भी कारण से बाहर निकलता है।

मैंने वाईफाई एडाप्टर को प्लग इन करने और इसे वापस प्लग करने का परीक्षण किया। इसमें लगभग 60 ~ 90 सेकंड लगते हैं लेकिन यह वाईफाई से वापस कनेक्ट हो जाएगा (मुझे लगता है कि लैन को अनप्लग्ड होना चाहिए)

आशा है ये मदद करेगा!


1
यह सुनिश्चित नहीं है कि पुन: संयोजन की प्रारंभिक देखभाल कैसे होती है, यहाँ सवाल नहीं था!
औरग

मैंने उत्तर को अपडेट किया क्योंकि एक चरण है जहां आपको कनेक्ट को स्वचालित रूप से जांचना होगा। वरीयताओं में भी आपको सभी तरह से नीचे स्क्रॉल करना चाहिए। आखिरी विकल्प ऑफ स्क्रीन है। यह भी कहता है कि स्वचालित रूप से वाईफ़ाई के लिए नेटवर्क से कनेक्ट करने का प्रयास करें (यह डिफ़ॉल्ट रूप से चालू है)। मैं यहां तक ​​कि वाईफाई एडेप्टर प्लग को वापस अंदर ले जा सकता हूं और यह 2 मिनट के भीतर फिर से कनेक्ट हो जाएगा। (मैंने लैन प्लग के बिना ऐसा किया था) यह वास्तव में सबसे अच्छा तरीका है जिसे मैंने कॉन्फ़िगर करने और वायरलेस प्रबंधित करने के लिए पाया है। आपको GUI संस्करण भी मिलता है, जिसे केवल कहा जाता हैwicd
Piotr Kula

कमांड में एक टाइपो है "सुडो वाइकड-क्रूस" 'यू' और 'आर' का आदान
गॉवियो

स्थापित करने के बाद wicd-curses, मेरी आरपी 3 अनियमित रूप से जमने लगी। इससे पहले कि मैं इसे अनइंस्टॉल कर देता, कभी फ्रीज़ नहीं होता और फ्रीज़ तुरंत गायब हो जाता। सावधान रहें!
akhmed

1
Wicd- शाप स्थापित करने के बाद, जेसी लाइट चलाने वाले मेरे आरपी 3 एस जमे नहीं हैं और जुड़े रहते हैं। लेकिन आज मैंने ईथरनेट पोर्ट से एक को जोड़ने की कोशिश की, और पाया कि इंटरफ़ेस बूट के कुछ सेकंड बाद खो जाएगा। मैं वाईफ़ाई कनेक्ट करने के लिए ठीक-ठीक शाप को कॉन्फ़िगर करने से पहले ठीक से कनेक्ट करने में सक्षम था।
क्रिस जेनक्स

14

इसे बिना किसी अतिरिक्त स्क्रिप्ट के हल किया जा सकता है।

में / आदि / नेटवर्क / इंटरफेस रखा:

allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp

रोमिंग इंटरफ़ेस को स्वयं-चंगा करने की अनुमति देता है।


अंतिम पंक्ति wlan0 इंटरफ़ेस में एक दूसरा आईपी पता जोड़ने के लिए लगता है; क्या वह जानबूझकर है?
fche

मैं केवल एक डीएचसीपी-असाइन किए गए पते के साथ समाप्त होता हूं। यह पूरी तरह से मुझे आश्चर्यचकित नहीं करेगा अगर बूट स्क्रिप्ट ने व्यवहार को बदल दिया है - हालांकि यह कॉन्फिग फाइल अनावश्यक रूप से आर्कैन है ...
डेविड सैनी

2
मेरे रास्पियन pi2 बॉक्स पर, यदि वलान प्रमाणीकरण के तीन चक्रों के लिए लंबे समय तक नीचे चला जाता है, तो "wpa-roam" के साथ भी यह फिर से कोशिश नहीं करता है।
fche

यह एकमात्र उत्तर है जो आरपीआई 3 पर मेरे लिए काम करता है। धन्यवाद!
अंकिम

1

netcfg

कोशिश करो netcfg। आप किस वितरण का उपयोग कर रहे हैं, इसके बारे में अधिक जानकारी के बिना, मैं और अधिक विवरण प्रदान नहीं कर सकता, लेकिन यह वही करना चाहिए जो आप चाहते हैं।


4
मैं वर्तमान रास्पियन डिस्ट्रो का उपयोग कर रहा हूं: pi @ raspberrypi ~ $ man netcfg netcfg pi @ raspberrypi ~ $ netcfg -bash: netcfg: कमांड के लिए कोई मैन्युअल प्रविष्टि नहीं मिली है pi @ raspberrypi ~ $ apt-cache search netcfg pi @ raspberrypi ~ $
andig

0

एक और समाधान, जैसा कि इस एक से निकाला गया ।
सबसे पहले अपनी वाईफाई सेटिंग को कॉन्फ़िगर करें: 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 -e
इस फ़ाइल के अंत में यह पंक्ति जोड़ें:

10 * * * * /home/pi/reconnect.sh

इसका मतलब है: "उस स्क्रिप्ट को हर 10 मिनट में निष्पादित करें (मूल के रूप में)"

अब, यदि आपके पास एक कनेक्शन है तो स्क्रिप्ट बाहर निकल जाएगी और कुछ भी नहीं होगा। यदि आप अपने राउटर को पिंग नहीं कर सकते हैं तो स्क्रिप्ट wpa_supplicant का उपयोग करके इसे फिर से कनेक्ट करने का प्रयास करेगी।

ध्यान दें कि एक क्रोन स्क्रिप्ट (इस मामले में केवल जब डिस्कनेक्ट किया गया है) से सब कुछ रूट करने के लिए ईमेल किया जाएगा। इसलिए यदि आपने अपने मेल उपनामों और पोस्टस्क्रिप्ट को कॉन्फ़िगर किया है तो आपको एक ईमेल प्राप्त होगा जब भी आपके पीआई का वाईफाई कनेक्शन नीचे चला गया और फिर स्क्रिप्ट के लिए फिर से धन्यवाद।


0

इसने मेरे लिए काम किया, ३०.मार्च २०१ using को रास्पियन जेसी का उपयोग करते हुए:

http://alexba.in/blog/2015/01/14/automatically-reconnecting-wifi-on-a-raspberrypi/


1
यदि लिंक मृत हो जाता है, तो कृपया अपनी पोस्ट में समाधान को संक्षेप में प्रस्तुत करें।
tlhIngan

सीएमबी, StackExchange के आरपीआई स्वाद वाले कोने में आपका स्वागत है। साइट पॉलिसी लिंक को केवल उसी तरह हतोत्साहित करती है जैसे वे सड़ांध के अधीन हैं। आपको लिंक की सामग्री को डुप्लिकेट करने की आवश्यकता नहीं है, लेकिन एक अच्छे उत्तर को लिंक में निहित हाइलाइट्स पर कम से कम विस्तार करना चाहिए।
Jacobm001

उपरोक्त जानकारी के लिए हमारी नीति को ध्यान में रखते हुए, केवल जैकबम001 की टिप्पणी के बारे में, यदि इस पोस्ट को संपादित नहीं किया गया है, जिसमें ऐसी जानकारी नहीं है, जो एक उत्तर के रूप में खड़ी हो सकती है, लेकिन न्यूनतम 48 घंटों में इसे सरल बनाने के लिए सामुदायिक विकी में परिवर्तित कर दिया जाएगा। यह समुदाय द्वारा सही किया गया।
goobering
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.