Tengo una máquina virtual (VMware Fusion) con acceso VNC habilitado. Quiero poder acceder a él desde la red. Desafortunadamente, VMware requiere que VM esté en ejecución para poder aceptar conexiones VNC y vmware-vmx es el proceso que escucha en el puerto VNC.
Mi idea era tener un trabajo launchd que ejecute la máquina virtual deseada cuando algo llegue al puerto. Terminé con el siguiente trabajo launchd:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.kulakov.vm.development</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/vmw</string>
<string> </string>
</array>
<key>StandardOutPath</key>
<string>/Users/kentzo/Desktop/com.kulakov.vm.development.log</string>
<key>StandardErrorPath</key>
<string>/Users/kentzo/Desktop/com.kulakov.vm.development.log</string>
<key>Sockets</key>
<dict>
<key>NetworkListener</key>
<dict>
<key>SockServiceName</key>
<string>5906</string>
<key>SockType</key>
<string>stream</string>
</dict>
</dict>
<key>Debug</key>
<true/>
</dict>
</plist>
/ usr / local / bin / vmw:
#!/bin/bash
/Applications/VMware\ Fusion.app/Contents/Library/vmrun -T fusion start "$1" nogui
El problema es que launchd escucha en el puerto y tengo que detener esto antes de poder ejecutar la VM. La única forma de detenerlo para escuchar en el puerto que he encontrado hasta ahora es descargar el trabajo. Desafortunadamente, también detiene el trabajo y evita que se inicie la máquina virtual.
¿Es posible decirle a launchd que deje de escuchar en un puerto dentro del demonio?