1 votos

Uso launchd para iniciar la VM de VMware en conexión VNC

Tengo una máquina virtual (VMware Fusion) habilitado con acceso VNC. Quiero ser capaz de acceder a ella desde la red. Por desgracia, VMware requiere VM a estar en ejecución para poder aceptar conexiones VNC y vmware-vmx es el proceso que escucha en el puerto VNC.

Mi idea era tener launchd trabajo que va a ejecutar deseado VM cuando algo llega al puerto. He terminado con las siguientes launchd trabajo:

<?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 parar esto antes de que me puede ejecutar VM. La única manera de detener a escuchar en el puerto que he encontrado hasta ahora es para descargar el trabajo. Por desgracia, también detiene el trabajo en sí mismo y evita la VM desde el lanzamiento.

Es posible de alguna manera decirle launchd para detener la escucha en un puerto en el demonio?

1voto

Old Pro Puntos 2851

El problema aquí es que si launchd va a escuchar en el puerto VNC, bien, entonces va a obtener el tráfico en el puerto VNC. La aprobación de maneras para que un demonio programa para lidiar con este son ya sea de esperar que el tráfico de red en StdIn y StdOut o para recopilar una lista de descriptores de archivo de launchd y el uso de uno de esos para la comunicación de red. De lo contrario el cliente se va a crear una conexión y, a continuación, ver la conexión cerrada por el launchd mientras se inicia el demonio.

Sugiero que tenga launchd escuche en otro puerto y generar un programa simple que sólo tubos de entrada a /dev/null , mientras que también el lanzamiento de la VM. Así, a continuación, iniciar la VM telnet a este puerto especial.

O, usted sabe, la cosa fácil de hacer es tener siempre la máquina virtual en ejecución. :-)

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X