""" openstack中 虚拟机nova_db.instances.id 需转换为16进制 后补8位 http://wiki.qemu.org/Features/QAPI/GuestAgent """ import os import sys import json import base64 import crypt import string import random import re if len(sys.argv)<3: print('Pls input argument instance password.') sys.exit(1) instance=sys.argv[1] pwd_=sys.argv[2] FILE_OPEN_READ="""{"execute":"guest-file-open", "arguments":{"path":"%s","mode":"r"}}""" FILE_OPEN_WRITE="""{"execute":"guest-file-open", "arguments":{"path":"%s","mode":"w+"}}""" FILE_READ="""{"execute":"guest-file-read", "arguments":{"handle":%s,"count":%d}}""" FILE_WRITE="""{"execute":"guest-file-write", "arguments":{"handle":%s,"buf-b64":"%s"}}""" FILE_CLOSE="""{"execute":"guest-file-close", "arguments":{"handle":%s}}""" def EXE(param): cmd="""virsh qemu-agent-command %s '%s' """ % (instance,param) #print "Exe command:%s" % cmd stream=os.popen(cmd).read() return None if not stream else json.loads(stream) def guestFileRead(path): file_handle=-1 try: file_handle=EXE(FILE_OPEN_READ % path)["return"] file_content=EXE(FILE_READ % (file_handle,1024000))["return"]["buf-b64"] except Exception,ex: print Exception,":",ex return None finally: EXE(FILE_CLOSE % file_handle) return file_content def guestFileWrite(path,content): file_handle=-1 try: file_handle=EXE(FILE_OPEN_WRITE % path)["return"] write_count=EXE(FILE_WRITE % (file_handle,content))["return"]["count"] except Exception,ex: print Exception,":",ex return -1 finally: EXE(FILE_CLOSE % file_handle) return write_count def genPwd(pwd): salt=''.join(random.choice(string.ascii_letters + string.digits) for _ in range(8)) return crypt.crypt(pwd, "$6$%s" % salt) def resetPwd(path,pwd): content=base64.standard_b64decode(guestFileRead(path)) #print "Read file content:%s" % content user_array=re.split("\n",content) for i,line in enumerate(user_array): info=line.split(":") if info[0]=="root": info[1]=genPwd(pwd) user_array[i]=":".join(info) #print "After change,user info:%s" % user_array[i] break content=base64.standard_b64encode("\n".join(user_array)) write_count=guestFileWrite(path,content) print write_count>0 resetPwd("/etc/shadow",pwd_)
转换qga执行的instanceid ---> "instance-%s" % hex(instid)[2:].zfill(8)
相关推荐
qemu-guest-agent
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
QEMU客座代理适用于FreeBSD guest虚拟机的QEMU Guest Agent版本警告!!! 此端口按“原样”提供。 某些命令不起作用,例如“ fsfreeze”。 我们尝试在FreeBSD上为vcpu和fs功能打补丁。 FreeBSD中的命令参考和当前...
qemu-guest-agent的Docker映像 该docker映像提供基于centos的qemu-guest-agent。 如何建造 docker build -t ele / qemu-guest-agent:latest。 如何使用 该映像仅在运行容器的虚拟机内部有用。 它提供了,可以在运行...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
the reserach of qemu-guest-agent
QEMU-Guest-Agent-win-X86_64-7.2.0
因为玩操作系统的需要,我觉得开源免费虚拟机,比较好用就是QE了。这个是界面版,容易操作。QEMU 3.0觉得比5.0好用。里面有安装说明
官方离线安装包,亲测可用
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用
行业分类-物理装置-一种通过nova调用qemu+guest+agent接口的方法
把离线下载包解压到linux目录下,进入该目录,用安装命令dpkg -i *即可执行安装。
qemu的内核镜像文件, 可以用于Linux环境下, qemu虚拟机的使用
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
两天时间去研究spice协议,网上资料很少,没有系统的介绍spice的编译环境,现在从0整理,并对库的依赖都一一说明,最终实现了基于spice协议下对桌面的虚拟化操作
一个基于美学和基于Arch Linux的简约Linux发行版。 一个基于美学和基于Arch Linux的简约Linux发行版。 设为首页 安装| 特色| 屏幕截图 维基
KVM / QEMU Windows来宾驱动程序(virtio-win) 该存储库包含用于半虚拟和仿真硬件的KVM / QEMU Windows来宾驱动程序。 该代码在Fedora和Red Hat Enterprise Linux上作为virtio-win RPM的一部分进行构建和发布,并且...
LibVirtKvm脚本地位在主分支... 这需要将域配置为使用静态(例如,VM内的apt-get install qemu-guest-agent ); 转储域状态( -s 选项,请参见下文)。 在这种情况下,域将暂停,其状态将被转储,将执行其所有磁盘的快