ejecutando un comando almacenado en una variable bash

0

Así que estoy intentando capturar la dirección IP de un invitado de Parallels VM (Win8) desde el host (OS X). Pensé que un guión de bash sería bueno para esto. El objetivo final es tener un solo comando que obtenga la dirección IP y luego inicie una redirección de puerto ssh.

Soy consciente del comando prlctl enter y no creo que sea compatible con la redirección de puertos.

Mi script hasta ahora:

#!/bin/bash

VM="Win8 Dev"
CMD="prlctl exec \"$VM\" ipconfig | grep "IPv4" | grep -m1 -o '\d\{1,3\}\.\d\{1,3\}\.\d\{1,3\}\.\d\{1,3\}'"
echo $CMD
IP=$($CMD)
echo $IP

salida:

prlctl exec "Win8 Dev" ipconfig | grep IPv4 | grep -m1 -o
'\d\{1,3\}\.\d\{1,3\}\.\d\{1,3\}\.\d\{1,3\}' Failed to get VM config:
The virtual machine could not be found. The virtual machine is not
registered in the virtual machine directory on your Mac. Contact the
Parallels support team for assistance.

Por lo tanto, parece que la variable CMD se está rellenando correctamente, pero algo se está perdiendo al intentar asignar la salida del comando a la variable IP.

¿Alguna idea sobre lo que estoy haciendo mal?

    
pregunta Sam Axe 28.10.2014 - 03:30

1 respuesta

1

Si alguien más necesita hacer esto, aquí está la solución que se me ocurrió:

#!/bin/bash

VM="name of my VM"
CMD="prlctl exec \"$VM\" ipconfig | grep "IPv4" | grep -m1 -o '\d\{1,3\}\.\d\{1,3\}\.\d\{1,3\}\.\d\{1,3\}'"
IP=$(eval $CMD)

#once you have the correct data in the $IP variable you can do something with it.. I initiate an ssh session, but you can do whatever you like.

No tengo idea de por qué se necesita evaluar aquí. Se necesitará alguien más familiarizado con bash para responder a ese misterio.

    
respondido por el Sam Axe 29.10.2014 - 07:53

Lea otras preguntas en las etiquetas