般情況下,局域網(wǎng)里的終端比如本地服務(wù)器設(shè)置靜態(tài)IP的好處是可以有效減少網(wǎng)絡(luò)連接時(shí)間,原因是過程中省略了每次聯(lián)網(wǎng)后從DHCP服務(wù)器獲取IP地址的流程,缺點(diǎn)是容易引發(fā)IP地址的沖突,當(dāng)然,還有操作層面的繁瑣,如果想要切換靜態(tài)IP地址,就得去網(wǎng)絡(luò)連接設(shè)置中手動(dòng)操作,本次我們使用Python3.10動(dòng)態(tài)地修改電腦的靜態(tài)IP地址。
一個(gè)網(wǎng)卡對應(yīng)一個(gè)靜態(tài)IP地址,但機(jī)器上未必只有一個(gè)網(wǎng)卡,所以如果想動(dòng)態(tài)切換,必須要指定網(wǎng)卡名稱,Win系統(tǒng)中通過ipconfig命令來獲取當(dāng)前系統(tǒng)的網(wǎng)卡信息:
ipconfig
系統(tǒng)返回:
PS C:\Users\liuyue\h2102-a\videopro> ipconfig
Windows IP 配置
以太網(wǎng)適配器 以太網(wǎng):
連接特定的 DNS 后綴 . . . . . . . :
本地鏈接 IPv6 地址. . . . . . . . : fe80::a216:f22a:52a:3388%4
IPv4 地址 . . . . . . . . . . . . : 192.168.1.104
子網(wǎng)掩碼 . . . . . . . . . . . . : 255.255.255.0
默認(rèn)網(wǎng)關(guān). . . . . . . . . . . . . : 192.168.1.1
以太網(wǎng)適配器 以太網(wǎng) 2:
連接特定的 DNS 后綴 . . . . . . . :
IPv6 地址 . . . . . . . . . . . . : fdb2:2c26:f4e4:0:7703:1e08:e622:2f0
臨時(shí) IPv6 地址. . . . . . . . . . : fdb2:2c26:f4e4:0:717c:b59e:b6cd:51b2
本地鏈接 IPv6 地址. . . . . . . . : fe80::2645:f265:ad72:c751%16
IPv4 地址 . . . . . . . . . . . . : 192.168.0.118
子網(wǎng)掩碼 . . . . . . . . . . . . : 255.255.255.0
默認(rèn)網(wǎng)關(guān). . . . . . . . . . . . . :
以太網(wǎng)適配器 vEthernet (Default Switch):
連接特定的 DNS 后綴 . . . . . . . :
本地鏈接 IPv6 地址. . . . . . . . : fe80::3ece:9b38:2572:4e33%18
IPv4 地址 . . . . . . . . . . . . : 172.31.16.1
子網(wǎng)掩碼 . . . . . . . . . . . . : 255.255.240.0
默認(rèn)網(wǎng)關(guān). . . . . . . . . . . . . :
如果想通過Python來獲取網(wǎng)卡信息,則需要在腳本中運(yùn)行ipconfig命令,構(gòu)建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('''(?<=以太網(wǎng)適配器 ).*?(?=:)|(?<=無線局域網(wǎng)適配器 ).*?(?=:)''', res)
print(resultlist)
return resultlist
if __name__ == '__main__':
IpManage()
這里通過os模塊的popen方法來運(yùn)行ipconfig命令,隨后再使用正則來匹配網(wǎng)卡名稱,最后將匹配到的網(wǎng)卡列表賦值給實(shí)例屬性,程序返回:
['以太網(wǎng)', '以太網(wǎng) 2', 'vEthernet (Default Switch)']
[Finished in 394ms]
至此,三塊網(wǎng)卡的名稱就獲取到了。
接下來就是通過Python腳本來動(dòng)態(tài)切換指定網(wǎng)卡的靜態(tài)IP地址了,Windows系統(tǒng)通過netsh命令來指定IP地址:
netsh interface ip set address name=以太網(wǎng) static 192.168.201.137 255.255.248.0 192.168.200.1
這里name參數(shù)是網(wǎng)卡名稱,后來三個(gè)地址分別代表靜態(tài)IP地址,子網(wǎng)掩碼以及網(wǎng)關(guān)地址。
這里將第一塊網(wǎng)卡的靜態(tài)IP地址設(shè)置為192.168.201.137,子網(wǎng)掩碼是255.255.248.0,網(wǎng)關(guān)地址為192.168.200.1。
隨后在Windows的網(wǎng)絡(luò)連接設(shè)置中進(jìn)行查看:
發(fā)現(xiàn)已經(jīng)設(shè)置好了,隨后再手動(dòng)修改為自動(dòng)獲得IP地址選項(xiàng)。
下面通過Python腳本進(jìn)行設(shè)置:
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)
這里添加一個(gè)實(shí)例方法來設(shè)置ip地址,同樣使用popen方法來運(yùn)行命令,隨后進(jìn)行調(diào)用:
if __name__ == '__main__':
im = IpManage()
im.set_ip(im.ip_list[0])
這里將第一塊網(wǎng)卡的IP地址進(jìn)行指定操作。
完整代碼:
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('''(?<=以太網(wǎng)適配器 ).*?(?=:)|(?<=無線局域網(wǎng)適配器 ).*?(?=:)''', res)
print(resultlist)
return resultlist
if __name__ == '__main__':
im = IpManage()
im.set_ip(im.ip_list[0])
藉此,我們就可以通過Python3.10動(dòng)態(tài)地配置本地網(wǎng)卡的靜態(tài)IP地址,也可以理解為是一種Python自動(dòng)化流程,靜態(tài)IP地址可以讓IP地址語義化,對于數(shù)據(jù)中心、網(wǎng)站、銀行的結(jié)算端口等往往需要靜態(tài)IP,與此同時(shí),也省卻了手動(dòng)配置靜態(tài)IP的繁瑣過程。
cmd如何修改ip地址,子網(wǎng)掩碼,網(wǎng)關(guān)以及DNS?盡管大家可以通過打開網(wǎng)上鄰居或網(wǎng)絡(luò)連接的方式來進(jìn)行可視化操作修改ip地址…等,但是對于需要特殊用途的朋友來說,未免無法滿足需求了吧?下面小編將教會(huì)大家在電腦上通過cmd運(yùn)行命令修改ip地址,有用的話,記得回頭來贊我,第二就是對著方面涉及少的就不要隨便更改,更改壞了的話,找到本地連接右鍵點(diǎn)擊診斷再點(diǎn)擊修復(fù)即可
在運(yùn)行中輸入cmd,點(diǎn)擊回車鍵出現(xiàn)命令行界面,在命令行中輸入下面的命令:netsh interface ip set address "本地連接" static 192.168.1.188 255.255.255.0 192.168.1.1 1
1、每個(gè)電腦中的本地連接的名字有可能不同。如,本地連接,本地連接 2,無線網(wǎng)絡(luò)連接,“Local Area Connection"等,大家根據(jù)自己的電腦實(shí)際情況為準(zhǔn),具體自己打開網(wǎng)上鄰居或網(wǎng)絡(luò)連接查看。
2、192.168.0.100是IP地址。
3、255.255.255.0是子網(wǎng)掩碼。
4、192.168.0.1是默認(rèn)網(wǎng)關(guān)。
5、最后面的1不用修改。
netsh命令是一個(gè)很強(qiáng)大的工具,可以在命令行界面輸入”netsh /?“來獲取這個(gè)命令的幫助。netsh命令還修改DNS,命令如下:
netsh interface ip set dns "本地連接" static 61.139.2.69 primary 1
netsh interface ip add dns "本地連接" static 114.114.114.114 index=2 1
注意:61.139.2.69 是DNS地址,不同的地區(qū),不同的網(wǎng)絡(luò)運(yùn)營商DNS地址不同,大家還是根據(jù)實(shí)際情況填寫,不過只要你懂網(wǎng)絡(luò)基礎(chǔ)知識(shí),應(yīng)該是懂如何獲得的吧?
Netsh interface ip set address name=“本地連接” source=dhcp 1
Netsh interface ip set dns name=“本地連接” source=dhcp 1