2012-12-29 22 views
7

Tôi đang cố gắng viết một tập lệnh python có thể làm cho máy tính của tôi liên kết với một điểm truy cập không dây, được đặt tên dưới dạng chuỗi. Ví dụ: tôi có thể chỉ định tôi muốn kết nối với linksys và tập lệnh của tôi sẽ khiến máy tính thực hiện điều đó.Kết hợp máy tính Windows của tôi với một AP wifi với Python

Tôi đã xem câu hỏi this nhưng không thể hiểu phải làm gì khi xem các liên kết được cung cấp.

Ai đó có thể chỉ cho tôi đúng hướng không?

+0

Bạn có nghĩa là kết nối với mạng không dây không? –

+0

@FarukSahin: Vâng, xin lỗi, đó là ý tôi. Tôi sẽ chỉnh sửa câu hỏi. – Michael0x2a

Trả lời

4

Tôi quyết định lấy đề xuất của Paulo và thử sử dụng Powershell/dòng lệnh. Tôi đã tìm thấy một số article về kết nối với mạng thông qua dòng lệnh.

Từ dòng lệnh, bạn có thể làm:

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

... nơi phần name=<ssid-name> là không bắt buộc và nhất thiết chỉ nếu hồ sơ cá nhân chứa nhiều SSID.

Tuy nhiên, có vẻ như hồ sơ phải tồn tại trên máy để công cụ dòng lệnh hoạt động. Tôi đã tìm thấy một số forum post khi lập trình tạo hồ sơ, nhưng tôi không cảm thấy muốn di chuyển qua nó.

Nếu tên cấu hình đã tồn tại, sau đó từ Python bạn có thể làm điều gì đó tương tự như sau:

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   

Đây là một giải pháp hoàn hảo, và tôi không hoàn toàn chắc chắn nếu nó sẽ làm việc trong mọi trường hợp , nhưng nó đã làm việc cho trường hợp cụ thể của tôi. Tôi nghĩ rằng tôi sẽ đăng những gì tôi đã đưa ra trong trường hợp ai đó muốn thử sửa đổi nó để làm cho nó tốt hơn.

+0

Lưu ý rằng 'subprocess.call()' dễ hơn 'subprocess.communicate()' ... cũng thấy [Câu trả lời này] (http://stackoverflow.com/questions/12381733/how-to-run-cmd- windows-netsh-command-using-python) –

1

Câu trả lời bạn đã liên kết cuộc đàm phán về việc gọi các chức năng C cấp thấp từ API Windows. Việc chơi đùa với những thứ cấp thấp làm cho bộ não của tôi bị tổn thương.

a .Net wrapper around the native C calls, bạn có thể sử dụng API cấp cao hơn này trực tiếp từ IronPython. Thật không may nó không được tài liệu tốt, nhưng nhìn vào mẫu C# và đào trên các nguồn nên được dễ dàng hơn so với gọi API cơ bản. Đây là một giải pháp rất trung tâm, vì vậy bạn có thể tốt hơn served by powershell.