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
  • 相关阅读:
    BigDecimal.setScale 处理java小数点
    JS判断用户手机是IOS还是Android
    h5 移动端 监听软键盘弹起、收起
    【java】查重类的实现
    MySQL ORDER BY IF() 条件排序
    版本回退
    Log4j 配置某个类中某个方法的输出日志到指定文件
    简单地实现文章的查重
    simhash算法
    mysql中 for update 使用
  • 原文地址:https://www.cnblogs.com/gushiren/p/9636376.html
Copyright © 2011-2022 走看看