Сценарии linux с переменной, ссылающейся на идентификаторы в текстовом файле ИЛИ массовое удаление снимков citrix vm - PullRequest
1 голос
/ 19 ноября 2010

У меня есть команда (команда citrix xenserver cli delete snapshot - если это имеет значение), которую я должен повторить несколько раз:

xe snapshot-uninstall snapshot-uuid=[snapshot-uuid]

Я хочу написать это с помощью переменной для [snapshot-uuid], чтобы я мог повторить все строки в текстовом файле, который выглядит следующим образом (каждая строка является уникальным uuid без пробелов):

dd56e7d2-00b0-4ddd-b3bf-368e3de059f9
ba201e7e-c180-4e00-8134-2ea128c9a14e
32128f38-b1b5-40e7-848c-dbdf5ae255ed
b53145ec-3748-475d-8add-008665533f72
173cb6c4-04da-43bc-abce-f2c97f76d3d2
3829f365-e619-47a0-93cd-d5aca37c28dd
6eb7aff9-70f9-4a77-96b0-044dfb0ce96e
ca7478c6-eae1-4090-aed5-c348b172d12a
439e247d-cf6a-4f09-a4d7-8dc719c317ca
b595d2e8-e2c4-4d0e-9b07-cccf1108904b
1da57650-dc16-48e2-bf5f-e2b8b96dba03
f2718a31-baa8-4c74-b170-5933e71da8c4
b2263c61-175e-43fa-b941-52ec2379a835
d0d6ede9-0589-4908-884f-900fef1d1c92
65e54f20-8c33-4f67-a394-36676add54ac
6d0f388c-5a78-4962-b1b2-55117b18a4c9

Дополнительным осложнением является то, что с каждой командой выдается «Вы уверены ... введите« да »для продолжения».

ОБНОВЛЕНИЕ: Первоначально я разместил этот вопрос, потому что мой вопрос на форуме Citrix Xenserver CLI был проигнорирован. Позже я получил ответ на форуме Citrix здесь , который включал команду, которая гораздо более эффективна, чем то, что я пытался сделать. Пожалуйста, если кому-либо понадобится удалить все снимки, используйте следующее:

for i in `xe snapshot-list --minimal | sed -e 's/,/\ /g'` ; do xe snapshot-uninstall force=true uuid=$i ; done

Ответы [ 2 ]

3 голосов
/ 19 ноября 2010

Вы можете создать сценарий оболочки для цикла по каждой строке:

#!/bin/bash

while read UUID; do
    yes | xe snapshot-uninstall snapshot-uuid="$UUID"
done < uuids.txt

Или, если вы хороший машинистка, вы можете ввести все три строки цикла while непосредственно в вашей оболочке.

Вы можете автоматически отвечать на любые запросы, передавая вывод yes.yes будет повторно печатать строку по вашему выбору (по умолчанию "y"):

Имя

yes - выводить строку несколько раз до тех пор, пока не будет уничтожено

Конспект

yes [STRING]...

Описание

Повторно выводить строку со всеми указанными STRING или 'y'.

1 голос
/ 19 ноября 2010
xargs -I % -a uuidfile xe snapshot-uninstall snapshot-uuid=%

Чтобы ответить на запросы «Вы уверены»:

xargs -I % -a sh -c 'yes | uuidfile xe snapshot-uninstall snapshot-uuid=%'
...