Se você estiver escrevendo scripts para analisar comandos do Vagrant, é recomendável analisar a saída amigável à máquina ( --machine-readable
), que é mais consistente.
O formato é:
timestamp,target,type,data...
para que você possa importá-lo como arquivo CSV, pois é separado por vírgula.
Com o shell, provavelmente é mais difícil de analisar, por exemplo:
for id in $(vagrant global-status --machine-readable | cut -d, -f5 | grep -B3 running | egrep -o "[0-9a-f]{7}"); do
vagrant suspend $id;
done
Consulte: Vagrant - Saída legível por máquina
No entanto, acho mais fácil analisar a saída padrão, por exemplo,
while read id name provider state path; do
[ "$state" = "running" ] && vagrant suspend $id;
done < <(vagrant global-status)
Btw. Teoricamente, o vagrant
comando deve aceitar uma expressão regular para a lista de VMs a serem suspensas conforme esta postagem do GH , por exemplo:
vagrant suspend '*'
mas não funciona e há um bug # 7221 pendente para corrigi-lo.
Bilhetes GitHub relacionados: