Pythonでコンピュータの重要なネットワーク情報を表示する

Pythonでコンピュータの重要なネットワーク情報を表示してみます。

ネットワークでの作業中に、ネットワークまたはインターネットの問題に関するトラブルが発生する場合があります。このような場合、ご自身のシステムネットワーク接続情報を確認しトラブルを解決する必要があります。解決するための手段として、でコンピュータの重要なネットワーク情報を表示します。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■コンピュータの重要なネットワーク情報を表示する

では、早速、コンピュータの重要なネットワーク情報を表示するスクリプトを書いていきます。

■コード

import subprocess

data = subprocess.check_output(['ipconfig','/all']).decode('cp932').split('\n')

for item in data:
    print(item.split('\r')[:-1])

subprocessモジュールを呼び出します。subprocessモジュールはPythonの標準ライブラリなので、事前にインストールする必要はあります。

dataという変数を作成し、subprocess.check_output()で引数でコマンドを実行し、その出力を返し、格納します。引数には、今回「ipconfig」コマンドの「all」を使用します。その後にdecode()で出力される情報をデコードします。今回は「cp932」と指定します。「utf-8」に指定すると「UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0x8d in position 13: invalid start byte」というエラーが発生します。

デコードの後にsplit() で区切り文字で改行します。

次にdata変数に格納した情報をfor文で繰り返し処理を行い、出力させていきます。

■実行

今回のスクリプトを「view_important_network_info.py」という名前で保存し、コマンドプロンプトから実行してみます。

実行してみると、ネットワーク情報が表示されることを確認できました。

■ifcfgモジュールを使用し、ネットワーク情報を表示する

次に、ネットワーク情報を表示する別の手段としては、ifcfgモジュールを使用する方法があります。ifcfgモジュールは、Pythonの標準ライブラリではありませんので、事前にインストールする必要があります。

ifcfgモジュールのインストールする場合は、今回はpipを経由してインストールを行うので、まずWindowsのコマンドプロンプトを起動します。

pip install ifcfg

起動後、上記のコマンドを入力し、Enterキーを押します。

なお、今回は、pythonランチャーを使用しており、Python Version 3.8.5にインストールを行うために、pipを使う場合にはコマンドでの切り替えを行います。

py -3.8 -m pip install ifcfg

切り替えるために、上記のコマンドを入力し、Enterキーを押します。

Collecting ifcfg
Downloading ifcfg-0.21-py2.py3-none-any.whl (10 kB)
Installing collected packages: ifcfg
Successfully installed ifcfg-0.21

Enterキーを押すと、インストールが開始され、「Successfully installed」と表示されます。これが表示されれば、正常にインストールは完了となります。

■コード

import ifcfg
print(ifcfg.interfaces())

インポートで、ifcfgモジュールを呼び出します。その後に、ifcfg.interfaces()でネットワークの情報を取得し、print関数で出力します。

■実行

このスクリプトを「network_info.py」という名前で保存し、コマンドプロンプトから実行してみます。

実行してみると、ネットワークの情報が出力されました。出力はされましたがネットワーク情報が表示されていません。今回使用しているコンピューターは、無線LANアダプタを使用しており、「’device’: ‘wireless lan adapter wi-fi’(無線LANアダプタ)」と表示されてます。

無線LANアダプタを使用していると、ネットワーク情報が表示されないということがわかりました。

今後、ifcfgモジュールを使用し「無線LANアダプタ」でもネットワークの情報が出力される方法を公開するかもしれません。

コメント

タイトルとURLをコピーしました