Various
authorJoerg Jaspert <joerg@debian.org>
Mon, 12 Dec 2011 21:59:44 +0000 (22:59 +0100)
committerJoerg Jaspert <joerg@debian.org>
Mon, 12 Dec 2011 21:59:44 +0000 (22:59 +0100)
kvm-shell

index 2a34b51..e0e4af5 100644 (file)
--- a/kvm-shell
+++ b/kvm-shell
 #    GNU General Public License for more details.
 #
 # INSTALL:
 #    GNU General Public License for more details.
 #
 # INSTALL:
-# 1) create these entries for your users in /etc/sudoers (use visudo) :
+# 1) create these entries for your users in /etc/sudoers (use visudo)
+#    (in Debian its even better to use /etc/sudoers.d/kvm-shell, run
+#    visudo -f /etc/sudoers.d/kvm-shell):
 #    User_Alias   KVMUSERS = vuser1,vuser2
 #    Cmnd_Alias   KVM      = /usr/bin/virsh
 #    KVMUSERS     ALL      = NOPASSWD: KVM
 #    User_Alias   KVMUSERS = vuser1,vuser2
 #    Cmnd_Alias   KVM      = /usr/bin/virsh
 #    KVMUSERS     ALL      = NOPASSWD: KVM
-# 2) Create /usr/local/etc/kvm-shell-users (see config variable below) :
+# 2) Create /etc/kvm-shell/users (or whatever name you set USERSFILE
+#    to below):
 #    Format:
 #    Format:
-#      <username> <vm1, vm2, ....>
+#      <username> <vm1 vm2 ...>
 #    Example:
 #      vuser1 vm1
 #      vuser2 vm1 vm2 vm3
 #    Example:
 #      vuser1 vm1
 #      vuser2 vm1 vm2 vm3
@@ -35,10 +38,13 @@ PROGRAM="kvm-shell"
 
 # configuration
 USERSFILE=/etc/kvm-shell/users
 
 # configuration
 USERSFILE=/etc/kvm-shell/users
+# What do we run for sudo?
 SUDO=/usr/bin/sudo
 SUDO=/usr/bin/sudo
+# Where is virsh
 VIRSH=/usr/bin/virsh
 # After how many seconds without input do we exit the dialogbox?
 TIMEOUTSECS=120
 VIRSH=/usr/bin/virsh
 # After how many seconds without input do we exit the dialogbox?
 TIMEOUTSECS=120
+# A tempdir. Whatever is in the environment before has precedence.
 TMPDIR=${TMPDIR:-"/tmp"}
 # Set to no if you do not want people to edit DNS information
 DO_RDNS="yes"
 TMPDIR=${TMPDIR:-"/tmp"}
 # Set to no if you do not want people to edit DNS information
 DO_RDNS="yes"
@@ -61,6 +67,8 @@ RDNSSCRIPT="${SUDO} /usr/local/bin/dodns"
 # Helper functions                                                     #
 ########################################################################
 # Simple function to cleanup whenever we exit.
 # Helper functions                                                     #
 ########################################################################
 # Simple function to cleanup whenever we exit.
+# This goes through all variable names in TEMPFILES and deletes the files
+# that those variables point to.
 function cleanup() {
     ERRVAL=$?
     trap - ERR EXIT TERM HUP INT QUIT
 function cleanup() {
     ERRVAL=$?
     trap - ERR EXIT TERM HUP INT QUIT
@@ -99,13 +107,13 @@ function revdns() {
         TEMPFILES="${TEMPFILES} dnsedit"
         set +e
         dialog --backtitle "KVM Shell ${VERSION}" \
         TEMPFILES="${TEMPFILES} dnsedit"
         set +e
         dialog --backtitle "KVM Shell ${VERSION}" \
-            --title "User $USER - Edit reverse DNS for VM ${VM}" \
+            --title "User ${USER} - Edit reverse DNS for VM ${VM}" \
             --cancel-label "Cancel, don't save" --ok-label "Apply" \
             --timeout ${TIMEOUTSECS} \
             --editbox ${dnsfile} 22 78 2>${dnsedit}
         ret=$?
         set -e
             --cancel-label "Cancel, don't save" --ok-label "Apply" \
             --timeout ${TIMEOUTSECS} \
             --editbox ${dnsfile} 22 78 2>${dnsedit}
         ret=$?
         set -e
-        case $ret in
+        case ${ret} in
             0)
                 # Clean exit, means we have something to do
                 echo "Applying changes, please be patient..."
             0)
                 # Clean exit, means we have something to do
                 echo "Applying changes, please be patient..."
@@ -124,7 +132,7 @@ function revdns() {
 function helpbox() {
     set +e
     dialog --stdout --backtitle "KVM Shell ${VERSION}" \
 function helpbox() {
     set +e
     dialog --stdout --backtitle "KVM Shell ${VERSION}" \
-        --title "User $USER - Help" \
+        --title "User ${USER} - Help" \
         --msgbox "                         KVM Shell ${VERSION}
 
 This is the KVM Shell Version ${VERSION}, written by Joerg Jaspert,
         --msgbox "                         KVM Shell ${VERSION}
 
 This is the KVM Shell Version ${VERSION}, written by Joerg Jaspert,
@@ -152,7 +160,7 @@ menu options given to you.
 #            select from
 # No arguments
 function main_menu {
 #            select from
 # No arguments
 function main_menu {
-    local AVAILABLEVMS=$(egrep "^$USER " "$USERSFILE")
+    local AVAILABLEVMS=$(egrep "^${USER} " "${USER}SFILE")
     # Only end up with the VMs, not the username too
     AVAILABLEVMS=${AVAILABLEVMS#* }
     local MENUITEMS=""
     # Only end up with the VMs, not the username too
     AVAILABLEVMS=${AVAILABLEVMS#* }
     local MENUITEMS=""
@@ -175,18 +183,18 @@ function main_menu {
     TEMPFILES="${TEMPFILES} dialogout"
     set +e
     dialog --backtitle "KVM Shell ${VERSION}" \
     TEMPFILES="${TEMPFILES} dialogout"
     set +e
     dialog --backtitle "KVM Shell ${VERSION}" \
-        --title "User $USER - Select VM to manage" \
+        --title "User ${USER} - Select VM to manage" \
         --cancel-label "Exit" --ok-label "Select VM" \
         --help-button --timeout ${TIMEOUTSECS} \
         --menu 'Available VMs:' 15 55 ${COUNTER} ${MENUITEMS} 2>${dialogout}
     ret=$?
     set -e
         --cancel-label "Exit" --ok-label "Select VM" \
         --help-button --timeout ${TIMEOUTSECS} \
         --menu 'Available VMs:' 15 55 ${COUNTER} ${MENUITEMS} 2>${dialogout}
     ret=$?
     set -e
-    local selectedvm=$(cat "${dialogout}")
+    local selvm=$(cat "${dialogout}")
     rm -f "${dialogout}"
     case $ret in
         0)
             # Clean exit, means selected a VM, lets call its action menu
     rm -f "${dialogout}"
     case $ret in
         0)
             # Clean exit, means selected a VM, lets call its action menu
-            select_action ${selectedvm}
+            select_action ${selvm}
             ;;
         2)
             # Hoowah, help? Go away.
             ;;
         2)
             # Hoowah, help? Go away.
@@ -207,7 +215,7 @@ function select_action {
         return 2
     fi
     set +e
         return 2
     fi
     set +e
-    STATE=$(${SUDO} ${VIRSH} domstate $selvm 2>/dev/null)
+    STATE=$(${SUDO} ${VIRSH} domstate ${selvm} 2>/dev/null)
     ret=$?
     set -e
     if [ ${ret} -ne 0 ]; then
     ret=$?
     set -e
     if [ ${ret} -ne 0 ]; then
@@ -219,7 +227,7 @@ function select_action {
         TEMPFILES="${TEMPFILES} dialogout"
         set +e
         dialog --backtitle "KVM Shell ${VERSION}" \
         TEMPFILES="${TEMPFILES} dialogout"
         set +e
         dialog --backtitle "KVM Shell ${VERSION}" \
-            --title "User $USER - please select action for VM ${selvm} (${STATE})" \
+            --title "User ${USER} - please select action for VM ${selvm} (${STATE})" \
             --cancel-label "Main Menu" --ok-label "Select Action" \
             --help-button --timeout ${TIMEOUTSECS} \
             --menu "Available actions for VM ${selvm} ($STATE):" 15 65 10 \
             --cancel-label "Main Menu" --ok-label "Select Action" \
             --help-button --timeout ${TIMEOUTSECS} \
             --menu "Available actions for VM ${selvm} ($STATE):" 15 65 10 \
@@ -233,21 +241,21 @@ function select_action {
             "mainmenu" "Back to main menu" 2>${dialogout}
         ret=$?
         set -e
             "mainmenu" "Back to main menu" 2>${dialogout}
         ret=$?
         set -e
-        local selectedaction=$(cat "${dialogout}")
+        local selact=$(cat "${dialogout}")
         rm -f "${dialogout}"
         clear
         case ${ret} in
             0)
         rm -f "${dialogout}"
         clear
         case ${ret} in
             0)
-                case ${selectedaction} in
+                case ${selact} in
                     console)
                         echo "Remember, you can leave the console with Strg+]"
                         echo "Also, you may need to hit Enter once to see anything"
                         echo ""
                     console)
                         echo "Remember, you can leave the console with Strg+]"
                         echo "Also, you may need to hit Enter once to see anything"
                         echo ""
-                        ${SUDO} ${VIRSH} ${selectedaction} ${selvm}
+                        ${SUDO} ${VIRSH} ${selact} ${selvm}
                         ;;
                     dominfo|start|shutdown|reboot|destroy)
                         set +e
                         ;;
                     dominfo|start|shutdown|reboot|destroy)
                         set +e
-                        ${SUDO} ${VIRSH} ${selectedaction} ${selvm}
+                        ${SUDO} ${VIRSH} ${selact} ${selvm}
                         set -e
                         ;;
                     rdns)
                         set -e
                         ;;
                     rdns)