diff options
author | Daniel Baumann <daniel.baumann@open-infrastructure.net> | 2017-03-07 15:29:13 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@open-infrastructure.net> | 2017-04-03 10:09:13 +0000 |
commit | 7e9400406ab4a7213d4ca1c7af576bfa601a1712 (patch) | |
tree | 58de4e9b84383a0971f5707e50182041681e90e1 | |
parent | Allowing @NAME@ variable in preseed files to allow for more flexibel preseed ... (diff) | |
download | compute-tools-7e9400406ab4a7213d4ca1c7af576bfa601a1712.tar.xz compute-tools-7e9400406ab4a7213d4ca1c7af576bfa601a1712.zip |
Allowing multiple container commands to be executed in a row.
Signed-off-by: Daniel Baumann <daniel.baumann@open-infrastructure.net>
-rwxr-xr-x | bin/container | 103 | ||||
-rw-r--r-- | share/man/container-create.1.txt | 3 | ||||
-rw-r--r-- | share/man/container.1.txt | 1 |
3 files changed, 57 insertions, 50 deletions
diff --git a/bin/container b/bin/container index a23f274..1b57193 100755 --- a/bin/container +++ b/bin/container @@ -33,66 +33,69 @@ then fi # Command -COMMAND="${1}" - -if [ ! -e "/usr/lib/${SOFTWARE}/${PROGRAM}/${COMMAND}" ] -then - echo "'${COMMAND}': no such ${PROGRAM} command" >&2 - exit 1 -fi +COMMANDS="${1}" # Options shift 1 OPTIONS="${@}" -# Pre hooks -for FILE in "${HOOKS}/pre-${PROGRAM}".* "${HOOKS}/${NAME}.pre-${PROGRAM}" +for COMMAND in $(echo ${COMMANDS} | sed -e 's|,| |g') do - if [ -x "${FILE}" ] + if [ ! -e "/usr/lib/${SOFTWARE}/${PROGRAM}/${COMMAND}" ] then - "${FILE}" + echo "'${COMMAND}': no such ${PROGRAM} command" >&2 + exit 1 fi -done -# Notification -if echo "${OPTIONS}" | grep -qs "\--no-notification" -then - OPTIONS="$(echo "${OPTIONS}" | sed -e 's|--no-notification||')" -else - case "${COMMAND}" in - create|remove|rm|restart|start|stop) - USER="${SUDO_USER:-${USER}}" - DATE="$(date +%Y-%m-%d\ %H:%M:%S)" - HOST="$(hostname -f)" - - # logfile - echo "${DATE} ${HOST} ${USER} ${PROGRAM} ${COMMAND} ${OPTIONS}" >> "/var/log/${SOFTWARE}/${PROGRAM}.log" - - # irc - if [ -e /usr/bin/irk ] && [ -e "/etc/default/${SOFTWARE}" ] - then - . /etc/default/${SOFTWARE} - - if [ -n "${IRK_TARGETS}" ] + # Pre hooks + for FILE in "${HOOKS}/pre-${PROGRAM}".* "${HOOKS}/${NAME}.pre-${PROGRAM}" + do + if [ -x "${FILE}" ] + then + "${FILE}" + fi + done + + # Notification + if echo "${OPTIONS}" | grep -qs "\--no-notification" + then + OPTIONS="$(echo "${OPTIONS}" | sed -e 's|--no-notification||')" + else + case "${COMMAND}" in + create|remove|rm|restart|start|stop) + USER="${SUDO_USER:-${USER}}" + DATE="$(date +%Y-%m-%d\ %H:%M:%S)" + HOST="$(hostname -f)" + + # logfile + echo "${DATE} ${HOST} ${USER} ${PROGRAM} ${COMMAND} ${OPTIONS}" >> "/var/log/${SOFTWARE}/${PROGRAM}.log" + + # irc + if [ -e /usr/bin/irk ] && [ -e "/etc/default/${SOFTWARE}" ] then - for TARGET in ${IRK_TARGETS} - do - irk ${TARGET} "\x0300${USER}\x03@\x0312${HOST}:\x03 \x0303${PROGRAM}\x03 \x0307${COMMAND}\x03 ${OPTIONS}" - done + . /etc/default/${SOFTWARE} + + if [ -n "${IRK_TARGETS}" ] + then + for TARGET in ${IRK_TARGETS} + do + irk ${TARGET} "\x0300${USER}\x03@\x0312${HOST}:\x03 \x0303${PROGRAM}\x03 \x0307${COMMAND}\x03 ${OPTIONS}" + done + fi fi - fi - ;; - esac -fi - -# Run -exec "/usr/lib/${SOFTWARE}/${PROGRAM}/${COMMAND}" "${OPTIONS}" - -# Post hooks -for FILE in "${HOOKS}/post-${PROGRAM}".* "${HOOKS}/${NAME}.post-${PROGRAM}" -do - if [ -x "${FILE}" ] - then - "${FILE}" + ;; + esac fi + + # Run + exec "/usr/lib/${SOFTWARE}/${PROGRAM}/${COMMAND}" "${OPTIONS}" + + # Post hooks + for FILE in "${HOOKS}/post-${PROGRAM}".* "${HOOKS}/${NAME}.post-${PROGRAM}" + do + if [ -x "${FILE}" ] + then + "${FILE}" + fi + done done diff --git a/share/man/container-create.1.txt b/share/man/container-create.1.txt index 9176b84..a45c1f2 100644 --- a/share/man/container-create.1.txt +++ b/share/man/container-create.1.txt @@ -88,6 +88,9 @@ EXAMPLES *Create example.net container using debconf script:*:: sudo container create -n example.net -s debconf +*Create example.net container with the default create script and start it:*:: + sudo container create,start -n example.net + SEE ALSO -------- container-tools(7), diff --git a/share/man/container.1.txt b/share/man/container.1.txt index 7708c6a..fa94d7f 100644 --- a/share/man/container.1.txt +++ b/share/man/container.1.txt @@ -30,6 +30,7 @@ container - Manage systemd-nspawn containers SYNOPSIS -------- *container* 'COMMAND' ['OPTIONS'] +*container* 'COMMAND1','COMMAND2',... 'COMMANDn' DESCRIPTION |