호스트가 재부팅될 때 가상 머신이 시작되는지 확인할 수 있도록 호스트의 가상 머신을 나열하는 bash 스크립트를 작성 중입니다.
내 문제는 이 작업을 수행하는 데 필요한 컴퓨터 목록을 얻는 것입니다.
내 전체 목록은 다음과 같습니다
"GYO DB Clone" {1f6e2518-ed20-4d71-a974-1d4823db4a81}
"GYO LB Clone" {6ba9a751-91ed-40a4-8a90-385559f67885}
"GYO MC Clone" {8bd0d243-887f-49dd-966f-6c104e451277}
"GYO Web Clone" {1229d75d-f046-4f3e-b15a-2d6c91b1e0d4}
"GYO DB 1" {5274eb5f-d0fe-46dd-8aaf-6d23728790b1}
"GYO LB 1" {5da93ec0-2f24-47f5-936b-390f4aacae8f}
"GYO MC 1" {3914335a-8199-4d2b-861d-09b8dfd8ea19}
"GYO MC 2" {b8ae5638-2e4a-4b8c-aec4-9cdf8b830e7f}
"GYO Web 1" {9e67266f-17ae-4de9-8445-8e4a06dd9ab7}
"GYO Web 2" {645453ba-8bfb-42af-8830-143ca10a655e}
"GYO Web 3" {8851950f-7671-434b-805a-7035d126f471}
"GYO Web 4" {03d74380-3a61-486f-a61f-bc9212b081a2}
이제 모두 불을 붙여야 해요...와는 별개로이것clones
내가 현재 code
얻는 목록은 다음과 같습니다.
sudo -H -u $VMUSER VBoxManage list vms | tr -s '\" {' '%{' | cut -d '%' -f3 | while read uuid; do
echo "$uuid";
done
$uuid
필요한 정보를 가져오겠습니다 . 이제 이를 제외하도록 수정하려면 어떻게 해야 합니까 clones
?
이 작업을 수행해야 하는 이유는 다소 분명하지만 만약을 대비해 호스트를 재부팅할 때 시작해야 하는 VM 수를 모르기 때문입니다. 물론 필요에 따라 VM을 추가/제거하겠습니다.
답변1
이것이 반환되는 경우 sudo -H -u $VMUSER VBoxManage list vms
:
"GYO DB Clone" {1f6e2518-ed20-4d71-a974-1d4823db4a81}
"GYO LB Clone" {6ba9a751-91ed-40a4-8a90-385559f67885}
"GYO MC Clone" {8bd0d243-887f-49dd-966f-6c104e451277}
"GYO Web Clone" {1229d75d-f046-4f3e-b15a-2d6c91b1e0d4}
"GYO DB 1" {5274eb5f-d0fe-46dd-8aaf-6d23728790b1}
"GYO LB 1" {5da93ec0-2f24-47f5-936b-390f4aacae8f}
"GYO MC 1" {3914335a-8199-4d2b-861d-09b8dfd8ea19}
"GYO MC 2" {b8ae5638-2e4a-4b8c-aec4-9cdf8b830e7f}
"GYO Web 1" {9e67266f-17ae-4de9-8445-8e4a06dd9ab7}
"GYO Web 2" {645453ba-8bfb-42af-8830-143ca10a655e}
"GYO Web 3" {8851950f-7671-434b-805a-7035d126f471}
"GYO Web 4" {03d74380-3a61-486f-a61f-bc9212b081a2}
당신이 해야 할 일은 일치하는 행을 필터링하는 것뿐입니다 Clone
. 이를 수행하는 방법에는 여러 가지가 있습니다. 이를 사용하는 한 가지 방법은 다음과 같습니다 awk
.
$ sudo -H -u $VMUSER VBoxManage list vms | awk -F'[{}]' '!/Clone/{print $2}'
5274eb5f-d0fe-46dd-8aaf-6d23728790b1
5da93ec0-2f24-47f5-936b-390f4aacae8f
3914335a-8199-4d2b-861d-09b8dfd8ea19
b8ae5638-2e4a-4b8c-aec4-9cdf8b830e7f
9e67266f-17ae-4de9-8445-8e4a06dd9ab7
645453ba-8bfb-42af-8830-143ca10a655e
8851950f-7671-434b-805a-7035d126f471
03d74380-3a61-486f-a61f-bc9212b081a2
-F[{}]
필드 구분 기호를 {
및 로 구성된 문자 클래스 로 설정합니다 }
. 따라서 두 번째 필드는 컴퓨터의 ID가 됩니다. 그런 다음 스크립트는 $2
일치하지 않는 CLone
행( )에 두 번째 필드( )를 인쇄합니다 !/Clone/
.