2014-01-13 9 views
0

현재 VM 파일을 원격 서버에 백업하는 스크립트 (BASH 사용)에서 작업하고 있습니다.표준 출력 값의 일부를 가져 와서 배열 변수에 넣습니다.

나는 "show VM command"에서 각 VM을 반복하면서 스크립트를 좀 더 동적으로 만들고 싶습니다. 내 생각은 모든 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 주석으로 해석 할 아직도 경우 I #을 사용하는 경우 $ ..)

+0

VM-ID를 얻으려면'cut -d '-f1'을 사용할 수 있습니다. – anishsane