名前を文字列として指定すると、コンピュータをワイヤレス アクセス ポイントに関連付けることができる Python スクリプトを作成しようとしています。たとえば、 に接続するように指定するlinksys
と、スクリプトによってコンピュータがそのように動作するようになります。
この質問を見ましたが、提供されたリンクを見て何をすべきか理解できませんでした。
誰かが私を正しい方向に向けることができますか?
Paulo の提案を受けて、Powershell/コマンド ラインを使用してみることにしました。コマンド ライン経由でネットワークに接続する方法に関する記事を見つけました。
コマンドラインから、次のことができます。
netsh wlan connect <profile-name> [name=<ssid-name>]
...このname=<ssid-name>
部分はオプションであり、プロファイルに複数の ssid が含まれている場合にのみ必要です。
ただし、コマンドラインが機能するには、プロファイルがマシンに既に存在している必要があるようです。プログラムによるプロファイルの作成に関するフォーラムの投稿を見つけましたが、それを調べようとは思いませんでした。
プロファイル名が既に存在する場合、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
これは不完全な解決策であり、すべてのケースで機能するかどうかは完全にはわかりませんが、私の特定のケースでは機能しました. 他の誰かがそれを修正してより良くしようとする場合に備えて、私が思いついたものを投稿すると思いました.
リンクした答えは、WindowsAPIから低レベルのC関数を呼び出すことについて説明しています。低レベルのものをいじると、私の脳が傷つきます。
ネイティブC呼び出しの周りに.Netラッパーがあります。この高レベルのAPIはIronPythonから直接使用できます。残念ながら、それは十分に文書化されていませんが、C#サンプルを見て、ソースを掘り下げることは、基盤となるAPIを呼び出すよりも簡単なはずです。これは非常にウィンドウ中心のソリューションであるため、PowerShellの方が適している場合があります。