zoukankan      html  css  js  c++  java
  • resetroot_169route_python3(用于ubuntu16.04)

    #!/usr/bin/python3
     
    import os
    import sys
    import json
    import urllib.request
    import urllib.parse
    import urllib.error
    import subprocess
    from cloudinit.sources.DataSourceConfigDrive import find_candidate_devs, read_config_drive
    from cloudinit.util import mount_cb
     
     
    def shell(cmd):
        sp = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        out, err = sp.communicate()
        return out, err
     
    # Before resetroot, We must ensure if 169.254.169.254 have gateway
    for dev in find_candidate_devs():
        results = mount_cb(dev, read_config_drive)
        network_data = results.get("network_config")
        found = dev
        gateways = []
        if found:
            for line in network_data.splitlines():
                if line.startswith("gateway"):
                    line = line.strip()
                    split_up = line.split(None, 1)
                    if len(split_up) <= 1:
                        continue
                    gateway = split_up[1]
                    gateways.append(gateway)
            break
     
    if gateways:
        gateway = gateways[0]
        cmd = "route add -host 169.254.169.254 gw %s" % gateway
        out,err = shell(cmd)
     
     
    # To reset password
    data = urllib.request.urlopen("http://169.254.169.254/openstack/latest/meta_data.json").read().decode()
    json_data = json.loads(data)
    print(json_data)
      
    meta = json_data.get("meta")
    if meta:
        adminPass =  meta.get("admin_pass")
        if  adminPass:
            os.system("echo 'root:%s' | chpasswd" % adminPass)
            params = urllib.parse.urlencode({"delete":True}).encode(encoding='UTF8')
            f = urllib.request.urlopen("http://169.254.169.254/openstack/latest/password", params)
            f.read()
    View Code
  • 相关阅读:
    php-有时候你会疑惑的小问题
    phpDocumentor生成文档
    mongodb重命名集合、数据库
    资料网站
    Service(服务)
    Component(组件)
    Module(模块)
    你不屑于大器晚成,就只能平庸一生
    是狼就磨好牙,是羊就练好腿!
    将Excel数据导入数据库
  • 原文地址:https://www.cnblogs.com/gushiren/p/9636376.html
Copyright © 2011-2022 走看看