2012-12-29 31 views
7

コンピュータをワイヤレスアクセスポイントに関連付けることができるPythonスクリプトを書きたいと思っています。たとえば、私はlinksysに接続したいと指定するかもしれません。私のスクリプトはコンピュータにそれをさせるでしょう。私のWindowsコンピュータをPythonのwifi APに接続する

私はthisの質問を見ましたが、提供されたリンクを見ることで何をすべきか理解できませんでした。

誰かが正しい方向に向けることができますか?

+0

ワイヤレスネットワークに接続することを意味しますか? –

+0

@FarukSahin:はい、申し訳ありませんが、それは私が意味するものです。私は質問を編集します。 – Michael0x2a

答えて

4

パウロの提案を受けて、Powershell /コマンドラインを使ってみることにしました。私は、コマンドライン経由でネットワークに接続することについてarticleが見つかりました。

コマンドラインから

、あなたが行うことができます:name=<ssid-name>一部はオプションであり、プロファイルは複数のSSIDが含まれている場合にのみ、必然である

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

を...。

しかし、コマンドラインの処理を行うためには、プロファイルがすでにマシンに存在している必要があります。私はプログラム的にプロファイルを作成することでforum postを見つけましたが、私はそれを調べるような気がしませんでした。

プロファイル名がすでに存在する場合は、Pythonのから次のような何かを行うことができます:

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-command-using-python) –

1

リンク先の答えは、Windows APIから低レベルのC関数を呼び出す方法について説明しています。低レベルのもので疲れると私の脳が痛くなります。

a .Net wrapper around the native C callsがあります。IronPythonから直接この上位レベルのAPIを使用できます。残念ながら、それは十分に文書化されていませんが、C#サンプルを見て、ソースを掘ることは、基礎となるAPIを呼び出すよりも簡単に行う必要があります。これは非常にウィンドウ中心のソリューションですので、あなたはより良いかもしれませんserved by powershell

関連する問題