MiracleJobLogo
エンジニアのエンジニアによるエンジニアのためのサイト
News 07/19 おすすめ情報に 『 【資格取得者速報】 Aさん 「 Microsoft Security, Compliance, and Identity Fundamentals」 』 を追加しました。
会員登録するとキャリア診断やサイトに参加することができます。
あなたにおすすめな技術情報、資格、仕事などをお知らせします。

無料会員登録


パスワードを忘れた場合
LINEで送る
MiracleJobBanaLeft1
MiracleJobBanaLeft2


【Windows】Pythonで固定のIPアドレス等を設定するスクリプト
profile-img
投稿者: s.yamashit...さん
投稿日:2023/05/31 11:24
更新日:2023/05/31 17:02
like-img
分類
技術
テクノロジー
その他
キャリア
運用・保守
投稿内容

【作成のきっかけ】

ネットワークの疎通試験の業務で、各々の場所で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スクリプトと同様で、環境に合わせた設定に変えてください。



コメント


MiracleJobBanaRight1
MiracleJobBanaRight2
MiracleJobBanaRight3