1 votos

Parallels VM: ¿Existe alguna forma de ejecutar un script en el host cuando se lanza una VM?

Mi VM de Parallels está configurada para utilizar algunos servicios de red en el host mac a través de la red virtual, pero como la red virtual no está activa cuando los servicios del host mac se inician en el arranque, no están escuchando en el interfaz virtual y la VM no puede conectarse a ellos. Después de arrancar la VM tengo que acordarme de reiniciar manualmente esos servicios en el host mac para que estén escuchando en la red virtual. Es molesto cuando me olvido de hacerlo...

Me gustaría automatizar este proceso si es posible. ¿Existe alguna forma de configurar Parallels para que ejecute un shell script en el host (Las sugerencias sobre cómo ejecutar un script de inicio en la VM invitada no son pertinentes).

2voto

John Hardin Puntos 31

A falta de que alguien indique una forma de hacer esto dentro de Parallels, he aquí una solución que utiliza únicamente utilidades nativas - gracias @usuario3439894 ¡por sugerir un Agente de Lanzamiento!

  1. Crear un /usr/local/bin/parallels_vm_starting shell script y chmod 755 para que sea ejecutable:

    !/bin/bash

    ( echo "----------" date

    if /usr/bin/tty -s
    then
        echo "interactive"
    else
        # sleep for a bit to give things a chance to settle
        echo "background - let things settle"
        sleep 15
        date
    fi
    
    # Actions to perform when hosted VM starts up
    
    /usr/local/Homebrew/bin/brew services restart redis
    
    # etc. as needed
    
    date

    ) 2>&1 | tee -a /tmp/vm-startup.log

  2. Crear un archivo de Agente de Lanzamiento ~/Library/LaunchAgents/parallels_vm_startup.plist con este contenido:

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>parallels_vm_startup</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/parallels_vm_starting</string> </array> <key>WatchPaths</key> <array> <string>/Library/Preferences/Parallels/parallels_dhcp_leases</string> </array> <key>StandardOutPath</key> <string>/dev/null</string> </dict> </plist>

Esto controlará el archivo /Library/Preferences/Parallels/parallels_dhcp_leases que Parallels modifica cuando la VM se inicia (asumiendo que la VM tiene la red habilitada), y ejecutará el shell script cuando esto ocurra.

Nota: el archivo de arrendamientos DHCP se actualiza regularmente mientras la máquina virtual está en funcionamiento. Si sólo desea reaccionar ante el lanzamiento o el cierre de una VM, supervise el archivo /Library/Preferences/Parallels/vmdirectorylist.desktop.xml en su lugar.

  1. Activar el Agente: launchctl load ~/Library/LaunchAgents/parallels_vm_startup.plist

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