【作成のきっかけ】
ネットワークの疎通試験の業務で、各々の場所でIPアドレスを変更して疎通確認を行うことがあって、
変更ごとに毎回コントロールパネルを開いて...設定して...はさすがに面倒臭いので、Pythonで自動で固定IP等を設定するスクリプトを作りました。
操作対象はWindows機器になります。
Pythonスクリプトと併せて、バッチファイル(.bat)のスクリプトも掲載します。
※管理者権限が実行できることが前提です
どちらとも設定する項目は、
IPv4アドレス・サブネットマスク・デフォルトゲートウェイ・プライマリーDNS・セカンダリーDNSです。
【Pythonを使用した固定IPの自動設定スクリプト】
*************************************************************************************************************************************************************************
import subprocess
def set_ip_address(adapter_name, ip_address, subnet_mask, gateway):
# IPアドレスの設定
subprocess.run(f"netsh interface ipv4 set add name= \"{adapter_name}\" source=static addr = {ip_address} {subnet_mask} {gateway} gwmetric=1", shell=True)
def set_dns_servers(adapter_name, primary_dns, secondary_dns):
# DNSサーバーの設定
subprocess.run(f"netsh interface ipv4 set dns name=\"{adapter_name}\" source=static addr= {primary_dns} register=non validate=no", shell=True)
subprocess.run(f"netsh interface ipv4 add dns name=\"{adapter_name}\" {secondary_dns} index=2 validate=no", shell=True)
# アダプタ名を指定してIPアドレスを設定
set_ip_address("イーサネット", "192.168.0.100", "255.255.255.0", "192.168.0.1")
# アダプタ名を指定してDNSサーバーを設定
set_dns_servers("イーサネット", "192.168.0.1", "8.8.8.8")
*************************************************************************************************************************************************************************
※赤字の部分は環境に合わせた設定に変えてください。
set_ip_addressだと左から、アダプタ名・IPアドレス・サブネット・デフォルトゲートウェイです。
set_dns_addressだと左から、アダプタ名・プライマリーDNS・セカンダリーDNSです。
スクリプトを簡単に解説すると、pythonの標準ライブラリであるsubprocessモジュールを使用してnetshコマンドを実行しています。
set_ip_address関数を定義して、特定のアダプタ(今回だとイーサネット)に対してIPアドレス、サブネットマスク、デフォルトゲートウェイを設定しています。
またset_dns_servers関数を定義して、特定のアダプタに対してDNSサーバー(プライマリ/セカンダリ)を設定しています。
※アダプタ名は、ipconfigコマンドなどで確認してください
【おまけ : バッチファイルを使用した固定IPの自動設定マクロ】
上記のpythonスクリプトでやっていることをバッチファイル(.bat)でも行ってみます。
以下の通りです。保存するときは、文字コードをANSIに変更してください。
**********************************************************************************************************************************************************************
@echo off
netsh interface ipv4 set add name=”イーサネット” source=static addr=”192.168.0.100″ mask=”255.255.255.0″ gateway=”192.168.0.1″ gwmetric=1
netsh interface ipv4 set dns name=”イーサネット” source=static addr=”192.168.0.1″ register=non validate=no
netsh interface ipv4 add dns name=”イーサネット” addr=”8.8.8.8″ index=2 validate=no
exit
*************************************************************************************************************************************************************************
赤字の部分はpythonスクリプトと同様で、環境に合わせた設定に変えてください。