ネットワークコマンド : netsh
PowerShell 7.2.6
PS C:\> netsh interface ipv4 show address Wi-Fi
Configuration for interface "Wi-Fi"
DHCP enabled: Yes
IP Address: 172.22.1.128
Subnet Prefix: 172.22.0.0/21 (mask 255.255.248.0)
Default Gateway: 172.22.0.1
Gateway Metric: 0
InterfaceMetric: 35
Python Script 1
import subprocess
def dfgw_check():
dfg_addr = subprocess.run(['netsh', 'interface', 'ipv4', 'show', 'address', 'Wi-Fi'],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
cmd_netsh = dfg_addr.stdout.decode('utf-8')
netsh_result = cmd_netsh.splitlines()
for line in netsh_result:
line0 = line.split()
#print(line0)
if 'Default' in line0:
default_gateway = line0[2]
ip_reach = subprocess.run(['ping', default_gateway, '-n', '1'],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if ip_reach.returncode == 0:
print(f'Default gateway ({default_gateway}) is reachable \n')
else:
print(f'Default gateway ({default_gateway}) is NOT reachable \n')
if __name__ == ('__main__'):
print(dfgw_check())
Python Script 2 : コマンド結果を一時的にファイルへ保存
import subprocess
def dfgw_check():
with open('outfile.txt', 'w') as f:
rf = subprocess.run(['netsh', 'interface', 'ipv4', 'show', 'address', 'Wi-Fi'],
stdout=f, stderr=f, text=True ,encoding='utf-8')
with open('outfile.txt', 'r', encoding='utf-8') as fr:
outfile = fr.read()
outfile0 = outfile.splitlines()
for line in outfile0:
line0 = line.split()
if 'Default' in line0:
default_gateway = line0[2]
ip_reach = subprocess.run(['ping', default_gateway, '-n', '1'],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if ip_reach.returncode == 0:
print(f'Default gateway ({default_gateway}) is reachable \n')
else:
print(f'Default gateway ({default_gateway}) is NOT reachable \n')
if __name__ == ('__main__'):
print(dfgw_check())
結果
(py310env) PS C:\> & c:/python.exe c:/dfgw_check2.py
Default gateway (172.22.0.1) is reachable