テキストファイル内のIDを参照する変数を使用したLinuxスクリプト、またはcitrix vmスナップショットの一括削除
質問
何度も繰り返す必要があるコマンド (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
解決
各行をループするシェル スクリプトを作成できます。
#!/bin/bash
while read UUID; do
yes | xe snapshot-uninstall snapshot-uuid="$UUID"
done < uuids.txt
または、タイピストが得意な場合は、while ループの 3 行すべてをシェルに直接入力することもできます。
の出力をパイプすることで、プロンプトに自動応答できます。 yes
. yes
選択した文字列 (デフォルトは「y」) を繰り返し出力します。
名前
yes - 強制終了されるまで文字列を繰り返し出力します。
あらすじ
yes [STRING]...
説明
指定されたすべての STRING または「y」を含む行を繰り返し出力します。
他のヒント
xargs -I % -a uuidfile xe snapshot-uninstall snapshot-uuid=%
:プロンプト "あなたは確信している" に対応するために、
xargs -I % -a sh -c 'yes | uuidfile xe snapshot-uninstall snapshot-uuid=%'
所属していません StackOverflow