Python3.10動態(tài)修改Windows系統(tǒng)本地IP地址
一般情況下,局域網里的終端比如本地服務器設置靜態(tài)IP的好處是可以有效減少網絡連接時間,原因是過程中省略了每次聯(lián)網后從DHCP服務器獲取IP地址的流程,缺點是容易引發(fā)IP地址的沖突,當然,還有操作層面的繁瑣,如果想要切換靜態(tài)IP地址,就得去網絡連接設置中手動操作,本次我們使用Python3.10動態(tài)地修改電腦的靜態(tài)IP地址。
獲取多網卡配置
一個網卡對應一個靜態(tài)IP地址,但機器上未必只有一個網卡,所以如果想動態(tài)切換,必須要指定網卡名稱,Win系統(tǒng)中通過ipconfig命令來獲取當前系統(tǒng)的網卡信息:
ipconfig
系統(tǒng)返回:
PS C:\Users\liuyue\h2102-a\videopro> ipconfig Windows IP 配置 以太網適配器 以太網: 連接特定的 DNS 后綴 . . . . . . . : 本地鏈接 IPv6 地址. . . . . . . . : fe80::a216:f22a:52a:3388%4 IPv4 地址 . . . . . . . . . . . . : 192.168.1.104 子網掩碼 . . . . . . . . . . . . : 255.255.255.0 默認網關. . . . . . . . . . . . . : 192.168.1.1 以太網適配器 以太網 2: 連接特定的 DNS 后綴 . . . . . . . : IPv6 地址 . . . . . . . . . . . . : fdb2:2c26:f4e4:0:7703:1e08:e622:2f0 臨時 IPv6 地址. . . . . . . . . . : fdb2:2c26:f4e4:0:717c:b59e:b6cd:51b2 本地鏈接 IPv6 地址. . . . . . . . : fe80::2645:f265:ad72:c751%16 IPv4 地址 . . . . . . . . . . . . : 192.168.0.118 子網掩碼 . . . . . . . . . . . . : 255.255.255.0 默認網關. . . . . . . . . . . . . : 以太網適配器 vEthernet (Default Switch): 連接特定的 DNS 后綴 . . . . . . . : 本地鏈接 IPv6 地址. . . . . . . . : fe80::3ece:9b38:2572:4e33%18 IPv4 地址 . . . . . . . . . . . . : 172.31.16.1 子網掩碼 . . . . . . . . . . . . : 255.255.240.0 默認網關. . . . . . . . . . . . . :
如果想通過Python來獲取網卡信息,則需要在腳本中運行ipconfig命令,構建change_ip.py腳本:
import os,re
class IpManage:
def __init__(self):
self.ip_list = self.get_ip()
def get_ip(self):
result = os.popen('ipconfig')
res = result.read()
resultlist = re.findall('''(?<=以太網適配器 ).*?(?=:)|(?<=無線局域網適配器 ).*?(?=:)''', res)
print(resultlist)
return resultlist
if __name__ == '__main__':
IpManage()
這里通過os模塊的popen方法來運行ipconfig命令,隨后再使用正則來匹配網卡名稱,最后將匹配到的網卡列表賦值給實例屬性,程序返回:
['以太網', '以太網 2', 'vEthernet (Default Switch)'] [Finished in 394ms]
至此,三塊網卡的名稱就獲取到了。
動態(tài)切換靜態(tài)IP
接下來就是通過Python腳本來動態(tài)切換指定網卡的靜態(tài)IP地址了,Windows系統(tǒng)通過netsh命令來指定IP地址:
netsh interface ip set address name=以太網 static 192.168.201.137 255.255.248.0 192.168.200.1
這里name參數是網卡名稱,后來三個地址分別代表靜態(tài)IP地址,子網掩碼以及網關地址。
這里將第一塊網卡的靜態(tài)IP地址設置為192.168.201.137,子網掩碼是255.255.248.0,網關地址為192.168.200.1。
隨后在Windows的網絡連接設置中進行查看:

發(fā)現(xiàn)已經設置好了,隨后再手動修改為自動獲得IP地址選項。
下面通過Python腳本進行設置:
def set_ip(self,name,ip="192.168.201.137",mask="255.255.248.0",gateway="192.168.200.1"):
result = os.popen(f"netsh interface ip set address name={name} static {ip} {mask} {gateway}")
res = result.read()
print(res)
這里添加一個實例方法來設置ip地址,同樣使用popen方法來運行命令,隨后進行調用:
if __name__ == '__main__':
im = IpManage()
im.set_ip(im.ip_list[0])
這里將第一塊網卡的IP地址進行指定操作。
完整代碼:
import os,re
class IpManage:
def __init__(self):
self.ip_list = self.get_ip()
def set_ip(self,name,ip="192.168.201.137",mask="255.255.248.0",gateway="192.168.200.1"):
result = os.popen(f"netsh interface ip set address name={name} static {ip} {mask} {gateway}")
res = result.read()
def get_ip(self):
result = os.popen('ipconfig')
res = result.read()
resultlist = re.findall('''(?<=以太網適配器 ).*?(?=:)|(?<=無線局域網適配器 ).*?(?=:)''', res)
print(resultlist)
return resultlist
if __name__ == '__main__':
im = IpManage()
im.set_ip(im.ip_list[0])
結語
藉此,我們就可以通過Python3.10動態(tài)地配置本地網卡的靜態(tài)IP地址,也可以理解為是一種Python自動化流程,靜態(tài)IP地址可以讓IP地址語義化,對于數據中心、網站、銀行的結算端口等往往需要靜態(tài)IP,與此同時,也省卻了手動配置靜態(tài)IP的繁瑣過程。
到此這篇關于Python3.10動態(tài)修改Windows系統(tǒng)本地IP地址的文章就介紹到這了,更多相關Python3.10動態(tài)修改本地IP地址內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python編寫通訊錄通過數據庫存儲實現(xiàn)模糊查詢功能
數據庫存儲通訊錄,要求按姓名/電話號碼查詢,查詢條件只有一個輸入入口,自動識別輸入的是姓名還是號碼,允許模糊查詢。這篇文章主要介紹了Python編寫通訊錄,支持模糊查詢,利用數據庫存儲,需要的朋友可以參考下2019-07-07
在linux下實現(xiàn) python 監(jiān)控usb設備信號
今天小編就為大家分享一篇在linux下實現(xiàn) python 監(jiān)控usb設備信號,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
Pycharm終端顯示PS而不顯示虛擬環(huán)境名的解決
這篇文章主要介紹了Pycharm終端顯示PS而不顯示虛擬環(huán)境名的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06

