2012-12-29 5 views
7

के साथ अपने विंडोज कंप्यूटर को एक वाईफाई एपी में जोड़ना मैं एक पायथन स्क्रिप्ट लिखने की कोशिश कर रहा हूं जो मेरा कंप्यूटर वायरलेस एक्सेस पॉइंट को एक स्ट्रिंग के रूप में नामित कर सकता है। उदाहरण के लिए, मैं निर्दिष्ट कर सकता हूं कि मैं linksys से कनेक्ट करना चाहता हूं, और मेरी स्क्रिप्ट कंप्यूटर को ऐसा करने का कारण बनती है।पाइथन

मैंने this प्रश्न देखा, लेकिन यह समझने में सक्षम नहीं था कि प्रदान किए गए लिंक को देखने से क्या करना है।

क्या कोई मुझे सही दिशा में इंगित कर सकता है?

+0

क्या आपका मतलब वायरलेस नेटवर्क से कनेक्ट करना है? –

+0

@ फ़ारुकसाहिन: हाँ, क्षमा करें, यही मेरा मतलब था। मैं सवाल संपादित करूंगा। – Michael0x2a

उत्तर

4

मैंने पाउलो के सुझाव लेने का फैसला किया और पावरहेल/कमांड लाइन का उपयोग करने का प्रयास किया। मुझे कमांड लाइन के माध्यम से नेटवर्क से कनेक्ट करने के बारे में article मिला।

कमांड लाइन से, आप कर सकते हैं:

netsh wlan connect <profile-name> [name=<ssid-name>] 

... जहां name=<ssid-name> भाग वैकल्पिक है और केवल यदि प्रोफ़ाइल कई SSIDs शामिल जरूरी है।

हालांकि, ऐसा लगता है कि कमांड लाइन सामग्री काम करने के लिए प्रोफ़ाइल को पहले से ही मशीन पर मौजूद होना चाहिए। मुझे प्रोग्राम बनाने के लिए forum post मिला, लेकिन मुझे इसके माध्यम से कैनवास करना पसंद नहीं आया।

प्रोफ़ाइल नाम पहले से मौजूद है, तो अजगर से आप निम्न जैसा कुछ कर सकते हैं:

import subprocess 

def connect_to_network(name): 
    process = subprocess.Popen(
     'netsh wlan connect {0}'.format(name), 
     shell=True, 
     stdout=subprocess.PIPE, 
     stderr=subprocess.PIPE) 
    stdout, stderr = process.communicate() 

    # Return `True` if we were able to successfully connect 
    return 'Connection request was completed successfully' in stdout   

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

+0

ध्यान दें कि 'subprocess.call()' 'subprocess.communicate()' से आसान है ... यह भी देखें [यह उत्तर] (http://stackoverflow.com/questions/12381733/how-to-run-cmd- windows-netsh-कमांड का उपयोग कर-अजगर) –

1

जो उत्तर आपने विंडोज एपीआई से निम्न स्तर सी कार्यों को कॉल करने के बारे में वार्तालाप किया है। कम स्तर की चीजों के साथ झुकाव मेरे दिमाग को चोट पहुंचाता है।

a .Net wrapper around the native C calls है, तो आप IronPython से सीधे इस उच्च स्तर API का उपयोग कर सकते हैं। दुर्भाग्यवश यह अच्छी तरह से प्रलेखित नहीं है, लेकिन सी # नमूना को देखते हुए और स्रोतों पर खुदाई अंतर्निहित एपीआई को कॉल करने से आसान होनी चाहिए। यह एक बहुत ही विंडोज-केंद्रित समाधान है, इसलिए आप served by powershell बेहतर हो सकते हैं।