qemu-agent-command 命令含义

作者: CC_06fa | 来源:发表于2018-08-14 11:05 被阅读42次

    通过指令

    virsh qemu-agent-command 虚拟机 --cmd '{"execute":"guest-info"}'
    

    可以查看其所有支持的命令,返回的数据如下

    {"return":{"version":"2.8.0",
    "supported_commands":  [
    {"enabled":true,"name":"guest-sync-delimited","success-response":true},{"enabled":true,"name":"guest-sync","success-response":true},
    {"enabled":true,"name":"guest-suspend-ram","success-response":false},
    {"enabled":true,"name":"guest-suspend-hybrid","success-response":false},
    {"enabled":true,"name":"guest-suspend-disk","success-response":false},
    {"enabled":true,"name":"guest-shutdown","success-response":false},
    {"enabled":true,"name":"guest-set-vcpus","success-response":true},
    {"enabled":true,"name":"guest-set-user-password","success-response":true},
    {"enabled":true,"name":"guest-set-time","success-response":true},
    {"enabled":true,"name":"guest-set-memory-blocks","success-response":true},
    {"enabled":true,"name":"guest-ping","success-response":true},
    {"enabled":true,"name":"guest-network-get-interfaces","success-response":true},
    {"enabled":true,"name":"guest-info","success-response":true},
    {"enabled":true,"name":"guest-get-vcpus","success-response":true},
    {"enabled":true,"name":"guest-get-time","success-response":true},
    {"enabled":true,"name":"guest-get-memory-blocks","success-response":true},
    {"enabled":true,"name":"guest-get-memory-block-info","success-response":true},
    {"enabled":true,"name":"guest-get-fsinfo","success-response":true},
    {"enabled":true,"name":"guest-fstrim","success-response":true},
    {"enabled":true,"name":"guest-fsfreeze-thaw","success-response":true},
    {"enabled":true,"name":"guest-fsfreeze-status","success-response":true},
    {"enabled":true,"name":"guest-fsfreeze-freeze-list","success-response":true},
    {"enabled":true,"name":"guest-fsfreeze-freeze","success-response":true},
    {"enabled":false,"name":"guest-file-write","success-response":true},
    {"enabled":false,"name":"guest-file-seek","success-response":true},
    {"enabled":false,"name":"guest-file-read","success-response":true},
    {"enabled":false,"name":"guest-file-open","success-response":true},
    {"enabled":false,"name":"guest-file-flush","success-response":true},
    {"enabled":false,"name":"guest-file-close","success-response":true},
    {"enabled":false,"name":"guest-exec-status","success-response":true},
    {"enabled":false,"name":"guest-exec","success-response":true}
    ]}}
    
    

    返回为数据,其中supported_command 为所有命令的数组
    其官方地址为:QEMU Guest Agent Protocol Reference

    各命令含义如下:

    1. guest-sync-delimited

    宿主机发送一个int数字给qga,qga返回这个数字,并且在后续返回字符串响应中加入ascii码为0xff的字符。

    2. guest-sync

    回文唯一的整数,这个命令进行测试。
    这个命令用于确保client与guest agent是同步的,不包含之前client的陈旧数据。直到返回特定的数字之前的guest agent响应都应被忽略。当含有client接收到陈旧数据时,这个命令并不能可靠的执行。一个特定的场景是,如果qemu-ga响应被逐个字符地输入到JSON解析器中。在这些情况下,使用guest-sync-delimited可能是最佳选择。对于逐行获取响应并将其转换为JSON对象的客户机,guest-sync应该足够了,但请注意,在通道不干净的情况下,一些解析响应的尝试可能会导致解析器错误。此类客户端还应该在此命令之前加上0xFF字节,以确保客户代理刷新前一个会话的部分读取的JSON数据。
    Arguments:
    id: int,随机生成的64-bit整数
    Returns:
    客户端发出的特定整数
    测试:

    virsh qemu-agent-command centos --cmd  
    '{"execute":"guest-sync", "arguments":{"id":1234567890}}'  
    {"return":1234567890}
    
    

    3. guest-ping

    Ping the guest agent,如果不返回错误信息,则成功
    测试:

    virsh qemu-agent-command centos --cmd  
    '{"execute":"guest-ping"}'  
    {"return":{}}
    
    

    4. guest-get-time

    获取虚拟机系统时间(相对于1970-01-01 in UTC);
    Returns:
    纳秒格式的时间
    测试:

    virsh qemu-agent-command centos --cmd  
    '{"execute":"guest-get-time"}'  
    {"return":1534345952638400000}
    
    

    5. guest-set-time

    设置虚拟机时间
    Arguments:
    time: int (optional)
    时间格式为纳秒,相对于1970-01-01 in UTC

    Returns:
    成功则无返回值

    6. guest-info

    获取guest agent信息
    Returns:
    GuestAgentInfo对象

    GuestAgentInfo对象用于描述agent guest 信息,其包含两个成员
    version: string -- guest agent版本信息
    supported_commands: array of GuestAgentCommandInfo -- guest agent命令信息

    7. guest-shutdown

    开启虚拟机关机任务,其为异步命令,不保证关机成功
    Arguments:
    mode: string (optional)
    "halt", "powerdown" , "reboot"三种状态可以选择,powerdown为默认选项,命令成功执行无返回。成功的标志是,VM以0的推出状态推出,或使用QMP命令查询时返回VM状态为shutdown

    8. guest-file-open

    打开虚拟机内文件并返回文件句柄
    Arguments:
    path: string,虚拟机所打开文件完整路径
    mode: string (optional),打开文件方式,与fopen()函数相同,默认为"r"

    Returns:
    执行成功则返回文件句柄

    9. guest-file-close

    关闭虚拟机文件
    Arguments:
    handle: int,guest-file-open所返回的文件句柄
    Returns:
    成功无返回值

    10. guest-file-read

    读取虚拟机中打开的文件(Data will be base64-encoded)
    Arguments:
    handle: int,guest-file-open所返回的文件句柄
    count:int,最少读取位数(默认为64K)

    Returns:
    成功则返回GuestFileRead类

    GuestFileRead对象包含如下成员
    count: int,读取位数
    buf-b64: string,base64-encoded bytes read
    eof: boolean,读取操作时是否遇到EOF。

    11. guest-file-write

    写入虚拟机打开的文件
    Arguments:
    handle: int,guest-file-open所返回的文件句柄
    count:int,最少读取位数(默认为64K)
    buf-b64: string,表示要写入数据的base64编码字符串
    count: int (optional),写入的位数,默认是在buffer中的全部位数

    Returns:
    成功返回GuestFileWrite类

    GuestFileWrite为agent file-write命令返回结果,包含两个成员,
    count: int,写入的位数
    eof: boolean,写操作时是否遇到EOF。

    12. guest-file-seek

    同fseek()用法相同,seek到文件的指定位置,
    Arguments:
    handle: int,guest-file-open所返回的文件句柄
    offset:int,文件位移量
    whence: GuestFileWhence,描述offset

    Returns:
    成功则返回GuestFileSeek类

    GuestFileSeek类包含如下成员
    position: int,当前位置
    eof: boolean,在seek过程中是否遇到EOF
    GuestFileWhence包含两个成员
    value: int,Integral value (0 for set, 1 for cur, 2 for end) 由于历史原因,可能与虚拟机不同
    name: QGASeek,Symbolic name, and preferred interface

    13. guest-file-flush
    将用户缓冲区数据写入磁盘或内核缓冲区
    Arguments:
    handle: int,guest-file-open所返回的文件句柄
    Returns:
    成功则无返回值*

    14. guest-fsfreeze-status

    获取虚拟机文件冻结状态
    Returns:
    GuestFsfreezeStatus枚举,包括thawed,frozen两种状态

    15. guest-fsfreeze-freeze

    同步并冻结虚拟机文件系统
    Returns:
    返回目前冻结的文件个数,如果执行错误,则解冻当前所有文件。

    16. guest-fsfreeze-freeze-list

    同步和冻结指定的虚拟机文件,
    Arguments:
    mountpoints: array of string (optional),要冻结的文件系统挂载点数组。如果省略,每个挂载的文件系统都会被冻结。无效的挂载点被忽略。

    17. guest-fsfreeze-thaw

    解冻所有冻结的文件
    Returns:
    解冻的文件个数

    18. guest-fstrim

    文件系统未使用的硬盘空间
    Arguments:
    minimum: int (optional)
    最小可丢弃的连续自由范围,单位为字节。通过增加这个值,fstrim操作将更快地完成具有严重碎片化的空闲空间的文件系统,尽管并非所有块都将被丢弃。默认值为零,意思是“丢弃所有空闲块”。

    19. guest-suspend-disk

    挂起虚拟机磁盘,如成功则不返回值

    20. guest-suspend-ram

    挂起虚拟机ram

    21. guest-suspend-hybrid

    将虚拟机状态写入磁盘,并挂起ram

    22. guest-network-get-interfacesd

    获取虚拟机IP地址,MAC地址,子网掩码

    23. guest-get-vcpus

    检索客户的逻辑处理器列表。这是一个只读操作。
    Returns:
    虚拟机的VCPUs列表,以GuestLogicalProcessor类形式返回

    GuestLogicalProcessor类
    logical-id: int,VCPU的唯一标识
    online: boolean, VCPU 是否可用
    can-offline: boolean (optional), VCPU 是否可以下线

    24. guest-set-vcpus

    尝试重新配置客户内部的逻辑处理器(当前:启用/禁用)。
    Arguments:
    vcpus: array of GuestLogicalProcessor

    25. guest-get-fsinfo

    获取在虚拟机中挂载的文件系统列表

    26. guest-set-user-password

    Arguments:
    username: string,需要更改密码的用户名
    password: string,新的密码(base64 encoded)
    crypted: boolean,如果以被crypt()加密则为真,否则为false

    Returns:
    如成功则无返回值

    27. guest-get-memory-block

    获取虚拟机内存块信息,返回虚拟机所知的所有内存块,以GuestMemoryBlock对象展示

    GuestMemoryBlock包含以下成员:
    phys-index: int,内存块在虚拟机中的唯一标识
    online: boolean,内存块在虚拟机中是否可用
    can-offline: boolean (optional),内存块是否可以offline

    28. guest-set-memory-blocks

    设置虚拟机中的内存块信息

    29. guest-exec-status

    获取虚拟机中的进程状态,如进程退出,则获取其相关元数据。
    Arguments:
    pid: int
    Returns:
    成功则返回GuestExecStatus类对象

    GuestExecStatus含有如下成员
    exited: boolean,如进程已经终止则为真
    exitcode: int (optional),进程退出码
    signal: int (optional),异常终止代码
    out-data: string (optional),程序stdout(base64-encoded)
    err-data: string (optional),程序stderr(base64-encoded)
    out-truncated: boolean (optional),如果由于大小限制而未完全捕获stdout,则为真。

    err-truncated: boolean (optional),如果由于大小限制而没有完全捕获stderr,则为真。

    30. guest-exec

    在虚拟机中执行命令
    Arguments:
    path: string,执行的路径或名称
    arg: array of string (optional),执行命令所需参数
    env: array of string (optional),执行所需的环境变量
    input-data: string (optional),所需数据
    capture-output: boolean (optional),获取进程的stdout/stderr

    Returns:
    如执行成功则返回其PID

    31. guest-get-host-name

    返回机器名称

    32. guest-get-timezone

    获取虚拟机时区信息

    33.guest-get-osinfo

    获取操作系统信息

    参考官网链接

    相关文章

      网友评论

      本文标题:qemu-agent-command 命令含义

      本文链接:https://www.haomeiwen.com/subject/gsdcbftx.html