python 修改ubuntu 的ip

先补充子网掩码的计算:如255.255.255.0计算为24(11111111.11111111.11111111.0)二进制有24个1,代码如下:

netmask = '255.255.255.0'
result = ""
for num in netmask.split('.'):
  temp = str(bin(int(num)))[2:]
  result = result + temp
print (len("".join(str(result).split('0')[0:1])))

所以ubuntu的ip地址表现形式:

192.168.1.112/24

把地址和掩码一起表示了

ubuntu用的是netplan(不同版本有所不用),所以改/etc/netplan/01-network-manager-all.yaml这个文件即可,改完执行netplan apply命令。

报错Permission denied:

由于该文件是只读的,所以要想通过代码修改,还要修改一下文件的权限chmod 557 /etc/netplan/01-network-manager-all.yaml。也可以干脆点chmod 777.

该文件的格式是yml,所以要安装yaml install

完整代码如下:

# netmask = '255.255.255.0'
# result = ""
# for num in netmask.split('.'):
#   temp = str(bin(int(num)))[2:]
#   result = result + temp
# print (len("".join(str(result).split('0')[0:1])))

import yaml,os
path = "/etc/netplan/01-network-manager-all.yaml"
def sudoCMD(command,password):
    str = os.system('echo %s | sudo -S %s' % (password,command))
    print(str)


sudoCMD('chmod 557 '+ path,'1234')

with open(path, mode='w', encoding='utf-8') as f:
    f.truncate()

def add_dict():
    data = {'network':{}}
    data['network']['version'] = 2
    data['network']['renderer'] = "networkd"
    data['network']['ethernets'] = {}
    data['network']['ethernets']['eno1'] = {'addresses':['192.168.1.112/24'],'dhcp4':'no','optional':"true",
                     'gateway4':"192.168.1.254",'nameservers':{'addresses':['8.8.8.8','114.114.114.114']}}
    # data['network']['ethernets']['ens22'] = {'addresses':['192.168.31.215/24'],'dhcp4':'no','optional':"true",
    #                  'gateway4':"192.168.31.1",'nameservers':{'addresses':['192.168.31.1,114.114.114.114']}}
    file = open(path, 'a', encoding='utf-8')
    yaml.dump(data, file)
    file.close()
add_dict()

with open(path, "r",encoding='utf-8') as yaml_file:
    yaml_obj = yaml.load(yaml_file.read(), Loader=yaml.FullLoader)
    print(yaml_obj)
    # main_yaml = open(path, 'w')
    # yaml.dump(yaml_obj, main_yaml)
    # main_yaml.close()


sudoCMD('sudo netplan apply','1234')

网络参数都在代码中,封装以下即可。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值