【问题标题】:ESXi: auto assign vnc port for each machineESXi:为每台机器自动分配 vnc 端口
【发布时间】:2015-10-13 05:07:41
【问题描述】:

我需要在 ESXi 主机上运行虚拟机的远程控制台。为此,我需要使用 VNC。为此,我需要使用下面给出的设置手动或以编程方式(当然,通过编辑 VMX 文件)将 TCP 端口分配给每个 VM。

remotedisplay.vnc.port="5900"
remotedisplay.vnc.enabled="true"
remotedisplay.vnc.password = "yourpassword"

是否有任何机制(最好是 psphere API)我可以告诉 ESX 自动为所有机器或单个机器分配端口?

感谢和问候,
象头神

PS。我使用的是 Ubuntu 14,想通过浏览器连接虚拟机。

【问题讨论】:

    标签: virtual-machine vmware vnc esxi


    【解决方案1】:

    这就是我使用 pysphere 让它工作的原因

    >>> from pysphere import VIServer
    >>> s = VIServer()
    >>> s.connect('10.11.100.220', 'root', 'password')
    >>> vm = s.get_vm_by_name("VMNAME")
    >>> settings = {'remotedisplay.vnc.port': '8949', 'remotedisplay.vnc.enabled' : 'true'}
    >>> vm.set_extra_config(settings)
    >>> s.disconnect()
    

    【讨论】:

    • 仅供参考,pysphere API 已被弃用,取而代之的是 vmware 的官方 github.com/vmware/pyvmomi
    • @SomeGuyOnAComputer 我知道 PySphere 和 pSphere 都已停止支持。我已经评估了 PyVMOMI,但没有太多关于此类任务的示例。当然,除了列出虚拟机、创建虚拟机等。对于其他任务,我们必须挖掘 API 并找出要做什么。他们应该给出更多的例子。 PyVMOMI 有存储库,但没那么有用。
    【解决方案2】:

    您可以通过 ssh 进入 esx 服务器,并在 vmx 文件中附加这些属性。

    echo -e "RemoteDisplay.vnc.enabled = true\nRemoteDisplay.vnc.port = 5900\nRemoteDisplay.vnc.password = \"yourpassword\"" >> /vmfs/volumes/YOURDATASTORE/YOURVMNAME/YOURVMNAME.vmx
    

    或在一个命令中

    sshpass -p PASSWORD ssh root@10.54.140.145 "echo -e \"RemoteDisplay.vnc.enabled = true\nRemoteDisplay.vnc.port = 5900\nRemoteDisplay.vnc.password = \"yourpassword\"\" >> /vmfs/volumes/YOURDATASTORE/YOURVMNAME/YOURVMNAME.vmx"
    

    如果这不是你的 vmx 路径,你也可以使用动态获取它

    vim-cmd vmsvc/getallvms | grep VMNAME | awk '{print $4}'
    

    或全部在一行

    sshpass -p PASSWORD ssh root@10.54.140.145 "echo -e \"RemoteDisplay.vnc.enabled = true\nRemoteDisplay.vnc.port = 5900\nRemoteDisplay.vnc.password = \"yourpassword\"\" >> $(vim-cmd vmsvc/getallvms | grep VMNAME | head -1 | awk '{print $4}')"
    

    【讨论】:

    • 写入VMX文件时,您的机器需要处于关机状态。
    • 您也可以在修改 VMX 文件之前使用 vim-cmd vmsvc/power.off $( vim-cmd vmsvc/getallvms | grep 'VMNAME' | awk '{print $1}' ) 关闭 VM。然后修改 VMX 并使用 vim-cmd vmsvc/power.on 将其恢复并启用 VNC。
    • 无法关机:(
    • 如果您使用vim-cmd vmsvc/getallvms 获取VMID,然后将该ID 传递给vim-cmd vmsvc/power.off VIMID,那么它应该可以正确关机。
    • 事情是我不想关闭机器。只是为了改变一个设置。希望你明白我的意思。
    猜你喜欢
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 1970-01-01
    • 2021-11-28
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多