环境:工控机Ubuntu20.04 LTS
PyQt5-5.14.x
ip配置文件:/etc/netplan/01-network-manager-all.yaml
需导入模块:
import yaml, os
from PyQt5.QtNetwork import QNetworkInterface
1.读取指定网卡的ip:
interface_list = [interface.name() for interface in QNetworkInterface.allInterfaces()]
/* 可能会出现读不到网卡的情况 ,通过以下指令处理 */
os.system("echo %s | sudo -S %s" % ("<su密码>", "sudo dhclient eno1")
for interface in interface_list:
if interface == "eno1":
for i in QNetworkInterface.interfaceFromName(interface).addressEntries():
if i.ip().isGlobal():
_ip = i.ip().toString()
(给ip Qt控件setText(_ip))
2.写netplan文件:
gate_way_list = ip_addr.split(".")
gate_way = gate_way_list[0]+"."+gate_way_list[1]+"."+gate_way_list[2]+"."+"255"
data = {"network": {}}
data["network"]["version"] = 2
data["network"]["renderer"] = "networkd" # 使用NetworkManager不成功,而networkd可以
data["network"]["ethernets"] = {}
data["network"]["ethernets"]["eno1"] = {
"addresses": [ip_addr+"/24"], "dhcp4": "no", "optional": "true", "gateway4": gate_way, "nameservers": {"addresses": ["8.8.8.8", "114.114.114.114"]
}
file = open("/etc/netplan/01-network-manager-all.yaml", "w", encoding="utf-8")
yaml.dump(data, file)
file.close()
os.system("echo %s | sudo -S %s" % ("<su密码>", "sudo netplan apply")