Interface status via subprocess, netsh

投稿者: | 9月 2, 2022

Python code for Windows env

import subprocess
from pprint import pprint

def get_if():
    ''' Get interfaces vis netsh '''

    # netsh interface ipv4 show interfaces
    get_ifs = subprocess.run(['netsh', 'interface', 'ipv4', 
                            'show', 'interfaces'], 
                            stdout=subprocess.PIPE,
                            stderr=subprocess.PIPE)
    cmd_result = get_ifs.stdout.decode('utf-8')

    get_if_result = []
    cmd_result0 = cmd_result.splitlines()
    for read_line in cmd_result0:
        read_line0 = read_line.split()
        get_if_result.append(read_line0)
    del get_if_result[:3]
    del get_if_result[-1]
    
    get_if_result0 = []
    for value in get_if_result:
        if 'Wi-Fi' in value:
            value0 = (value[4], value[3])
            get_if_result0.append(value0)
        elif 'Ethernet' in value:
            value0 = (value[4], value[3])
            get_if_result0.append(value0)
        else:
            pass

    get_if_dict = dict(get_if_result0)

    return get_if_dict

実行結果

for k, v in get_if().items():
    pprint(f'{k} : {v}')

'Wi-Fi : connected'
'Ethernet : disconnected'