0 votos

ejecutar un comando almacenado en una variable bash

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

Soy consciente de la prlctl enter y no creo que soporte 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

de 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.

Parece que la variable CMD se rellena correctamente, pero algo se pierde al intentar asignar la salida del comando a la variable IP.

¿Alguna idea sobre lo que estoy haciendo mal?

1voto

Sam Axe Puntos 193

Si alguien más necesita hacer esto, esta es 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 ni idea de por qué se necesita una evaluación aquí. Alguien más familiarizado con bash será necesario para responder a ese misterio.

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