通过pyqt界面更改Ubuntu系统ip

环境:工控机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")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值