8

名前を文字列として指定すると、コンピュータをワイヤレス アクセス ポイントに関連付けることができる Python スクリプトを作成しようとしています。たとえば、 に接続するように指定するlinksysと、スクリプトによってコンピュータがそのように動作するようになります。

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

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

4

3 に答える 3

5

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        

これは不完全な解決策であり、すべてのケースで機能するかどうかは完全にはわかりませんが、私の特定のケースでは機能しました. 他の誰かがそれを修正してより良くしようとする場合に備えて、私が思いついたものを投稿すると思いました.

于 2012-12-29T07:09:07.900 に答える
1

リンクした答えは、WindowsAPIから低レベルのC関数を呼び出すことについて説明しています。低レベルのものをいじると、私の脳が傷つきます。

ネイティブC呼び出しの周りに.Netラッパーがあります。この高レベルのAPIはIronPythonから直接使用できます。残念ながら、それは十分に文書化されていませんが、C#サンプルを見て、ソースを掘り下げることは、基盤となるAPIを呼び出すよりも簡単なはずです。これは非常にウィンドウ中心のソリューションであるため、PowerShellの方が適している場合があります。

于 2012-12-29T03:43:47.393 に答える