esegue un comando memorizzato in una variabile bash

0

Quindi sto provando a catturare l'indirizzo IP di un guest di Parallels VM (Win8) dall'host (OS X). Pensavo che uno script di bash sarebbe stato utile per questo. L'obiettivo finale è quello di avere un singolo comando che recuperi l'indirizzo IP e quindi inizi un reindirizzamento della porta ssh.

Sono a conoscenza del comando prlctl enter e non credo che supporti il reindirizzamento delle porte.

Il mio script finora:

#!/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

output:

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.

Quindi sembra che la variabile CMD sia popolata correttamente, ma qualcosa si sta perdendo quando si tenta di assegnare l'output del comando alla variabile IP.

Qualche idea su ciò che sto facendo male?

    
posta Sam Axe 28.10.2014 - 03:30
fonte

1 risposta

1

Se qualcun altro ha bisogno di farlo, ecco la soluzione che ho trovato:

#!/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.

Non ho idea del perché l'eval sia necessario qui. Sarà necessario qualcuno con più familiarità con bash per rispondere a quel mistero.

    
risposta data 29.10.2014 - 07:53
fonte

Leggi altre domande sui tag