Possiedo una VM (VMware Fusion) con accesso VNC abilitato. Voglio essere in grado di accedervi dalla rete. Sfortunatamente, VMware richiede che la VM sia in esecuzione per poter accettare le connessioni VNC e vmware-vmx è il processo che ascolta sulla porta VNC.
La mia idea era quella di avere un lavoro di avvio che eseguirà la VM desiderata quando qualcosa arriva alla porta. Ho finito con il seguente lavoro di avvio:
<?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
Il problema è che launchd ascolta sulla porta e devo fermarlo prima di poter eseguire VM. L'unico modo per fermarlo per ascoltare sulla porta che ho trovato finora è scaricare il lavoro. Sfortunatamente, interrompe anche il lavoro stesso e impedisce l'avvio della VM.
È possibile in qualche modo dire a launchd di interrompere l'ascolto su una porta all'interno del demone?