diff options
Diffstat (limited to '.local/bin/stop-vm')
-rwxr-xr-x | .local/bin/stop-vm | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/.local/bin/stop-vm b/.local/bin/stop-vm new file mode 100755 index 0000000..6c92250 --- /dev/null +++ b/.local/bin/stop-vm | |||
@@ -0,0 +1,21 @@ | |||
1 | #!/bin/sh | ||
2 | # Stops domains given as arguments | ||
3 | |||
4 | opts=$(getopt -o 'as' -l 'all,save' -- "$@") | ||
5 | eval set -- "$opts" | ||
6 | all=0 | ||
7 | save=0 | ||
8 | while true | ||
9 | do | ||
10 | case $1 in | ||
11 | '-a'|'--all') all=1; shift; continue ;; | ||
12 | '-s'|'--save') save=1; shift; continue ;; | ||
13 | '--') shift; break;; | ||
14 | esac | ||
15 | done | ||
16 | |||
17 | [ $all -eq 1 ] && domains="$(virsh list | grep running | awk '{print $2}')" || domains="$@" | ||
18 | for domain in $domains | ||
19 | do | ||
20 | [ $save -eq 1 ] && virsh managedsave $domain || virsh shutdown $domain | ||
21 | done | ||