ESXi:为每台机器自动分配 vnc 端口
ESXi: auto assign vnc port for each machine
我需要在 ESXi 主机上使用 VM 运行 的远程控制台。为此,我需要使用 VNC。为此,我需要使用下面给出的设置手动或以编程方式(当然,通过编辑 VMX 文件)为每个 VM 分配 TCP 端口。
remotedisplay.vnc.port="5900"
remotedisplay.vnc.enabled="true"
remotedisplay.vnc.password = "yourpassword"
是否有任何机制(最好是 psphere API)可以让 ESX 自动为所有机器或单个机器分配端口?
感谢和问候,
象头神
PS。我正在使用 Ubuntu 14 并想通过浏览器连接 VM。
您可以做的是通过 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 }'
或全部在一行中
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 }')"
这就是我使用 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()
我需要在 ESXi 主机上使用 VM 运行 的远程控制台。为此,我需要使用 VNC。为此,我需要使用下面给出的设置手动或以编程方式(当然,通过编辑 VMX 文件)为每个 VM 分配 TCP 端口。
remotedisplay.vnc.port="5900"
remotedisplay.vnc.enabled="true"
remotedisplay.vnc.password = "yourpassword"
是否有任何机制(最好是 psphere API)可以让 ESX 自动为所有机器或单个机器分配端口?
感谢和问候,
象头神
PS。我正在使用 Ubuntu 14 并想通过浏览器连接 VM。
您可以做的是通过 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 }'
或全部在一行中
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 }')"
这就是我使用 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()