qemu guest agent修改密码(python)
来源:互联网 发布:nseer erp 源码下载 编辑:程序博客网 时间:2024/06/06 00:16
Python代码:
""" openstack中 虚拟机nova_db.instances.id 需转换为16进制 后补8位 http://wiki.qemu.org/Features/QAPI/GuestAgent"""import osimport sysimport jsonimport base64import cryptimport stringimport randomimport reif 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,":",exreturn None finally:EXE(FILE_CLOSE % file_handle) return file_contentdef 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,":",exreturn -1 finally:EXE(FILE_CLOSE % file_handle) return write_countdef 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_)若virsh qemu-agent-command执行返回没有结果,则使用/var/lib/libvirt/qemu/下的socket文件进行通信,请参考python实例浅谈下的文章。
0 0
- qemu guest agent修改密码(python)
- nova 通过 qemu-guest-agent 修改用户密码
- qemu-guest-agent调研
- qemu guest agent安装研究
- qemu guest agent windows 安装
- qemu-guest-agent各版本功能演进
- qemu-guest-agent的一些用途
- 利用qemu-guest-agent冻结文件系统
- Find Guest IP address using QEMU Guest Agent
- 利用Qemu Guest Agent (Qemu-ga) 实现 Openstack 监控平台
- 利用Qemu Guest Agent (Qemu-ga) 实现 Openstack 监控平台
- qemu-guest-agent windows下的监控开发
- qemu-guest-agent windows下的监控开发
- OpenStack: Perform Consistent Snapshots With Qemu Guest Agent
- openstack通过qemu-guest-agent在物理机上操作虚拟机
- Linux中修改root密码以及增加guest账户
- python 批量修改密码
- How QEMU fakes GPA to guest OS
- Chrom 42及以上版本Silverlight不能正确加载的设置方法
- 主机网卡发现所发送数据的目的IP和默认网关不在同一网段(网络)时,会丢弃该数据帧吗???
- leetcode Count Complete Tree Nodes
- LeetCode151_Reverse Words in a String
- jQuery入门:用包装集工作(Working with Selections)
- qemu guest agent修改密码(python)
- Linux:signal调用类成员函数
- Android 知识点
- pthread
- 用java操作mongodb
- 文字滚动
- HDU 1001
- iOS 一个带动画的等待指示器
- nginx lua调用redis和mongo