2014-01-13 9 views
0

В настоящее время я работаю над скриптом (используя BASH), который создает резервную копию файла VM на удаленном сервере.Возьмите части стандартного выходного значения и поместите его в переменную массива

Я хочу попытаться сделать сценарий более динамичным, имея возможность просто циклировать каждую виртуальную машину из «команды show VM». моя идея состоит в том, чтобы взять стандартный вывод команды, которая отображает всю ВМ и разбивается и превращает ее в полезные переменные. возможно, с несколькими массивами.

Выход выходит, как будто это все равно сломает все это? скажем, пробелами и разрывами строк?

Vmid   Name         File         Guest OS   Version Annotation 
10  FREEPBX    [datastore2] FREEPBX/FREEPBX.vmx      other26xLinux64Guest  vmx-08    
13  AdaptivNICE2Cloud [datastore2] AdaptivNICE2Cloud/AdaptivNICE2Cloud.vmx other26xLinux64Guest  vmx-08    
15  IVSTelManager  [datastore2] IVSTelManager/IVSTelManager.vmx   debian6Guest    vmx-08    
4  Neptune    [datastore1] Neptune/Neptune.vmx      winNetEnterprise64Guest vmx-08    
9  Kayako    [datastore2] Kayako/Kayako.vmx       other26xLinux64Guest  vmx-08 
+0

btw, это не совсем Баш. Это оболочка busybox. – anishsane

+0

Спасибо, это поможет немного! По-прежнему нужно получить Vmid, но я попытаюсь извлечь уроки из кода, который вы мне дали. –

ответ

0

Я думаю, вам это нужно:.

$ vim-cmd vmsvc/getallvms | sed -n 's|.*\[|/vmfs/volumes/|;s|\] *|/|;s|\.vmx .*|.vmx|p' 
/vmfs/volumes/datastore2/FREEPBX/FREEPBX.vmx          
/vmfs/volumes/datastore2/AdaptivNICE2Cloud/AdaptivNICE2Cloud.vmx     
/vmfs/volumes/datastore2/IVSTelManager/IVSTelManager.vmx       
/vmfs/volumes/datastore1/Neptune/Neptune.vmx          
/vmfs/volumes/datastore2/Kayako/Kayako.vmx       
# Prints all VMX files paths 

ИЛИ

$ vim-cmd vmsvc/getallvms | sed -n 's|.*\[|/vmfs/volumes/|;s|\] *|/|;s|/[^/]*\.vmx .*||p' 
/vmfs/volumes/datastore2/FREEPBX 
/vmfs/volumes/datastore2/AdaptivNICE2Cloud 
/vmfs/volumes/datastore2/IVSTelManager 
/vmfs/volumes/datastore1/Neptune 
/vmfs/volumes/datastore2/Kayako 
# Prints all directories having VMX files. These directories also contain the virtual HDDs, which you would want to backup. 

(Игнорировать в строке приглашения $, она по-прежнему корень подсказки SO будет интерпретировать это как комментарий, если я используйте # на месте, если $ ..)

+0

Чтобы получить VM-ID, вы можете использовать 'cut -d '' -f1' – anishsane

 Смежные вопросы

  • Нет связанных вопросов^_^