From 809554ee83d93d8bcb520abec595201d8bd4d4ea Mon Sep 17 00:00:00 2001 From: CyberLeo Date: Thu, 28 Apr 2011 12:27:58 -0500 Subject: [PATCH] j: clean up entry routines; eval instead of exec --- exec => eval | 0 j | 33 ++++++++++++++++++++------------- 2 files changed, 20 insertions(+), 13 deletions(-) rename exec => eval (100%) diff --git a/exec b/eval similarity index 100% rename from exec rename to eval diff --git a/j b/j index 581973c..c9e30fc 100755 --- a/j +++ b/j @@ -3,7 +3,7 @@ # http://wiki.cyberleo.net/wiki/CyberLeo/COPYRIGHT # Need root beyond here -[ "$(id -u)" -eq 0 ] || exec sudo "${0}" "${@}" +[ "$(id -u)" -eq 0 ] || exec sudo env J_BASE=${J_BASE} J_NAME=${J_NAME} J_USER=${J_USER} "${0}" "${@}" meh() { printf " \033[1;32m*\033[0m %s%s\n" "${jname:+${jname}: }" "${*}"; } omg() { printf " \033[1;33m*\033[0m %s%s\n" "${jname:+${jname}: }" "${*}"; } @@ -11,21 +11,21 @@ wtf() { printf " \033[1;31m*\033[0m %s%s\n" "${jname:+${jname}: }" "${*}"; exit pebkac() { [ "${*}" ] && printf "%s\n\n" "${*}" cat < Usage: - [arguments] + [arguments] list - ls list available jails + ls list available chroots status show jail status - start prepare an existing jail for use + start prepare an existing chroot for use stop undo what 'start' did - exec enter - shell spawn a shell or command within the jail + shell spawn a shell or command within the chroot + + eval evaluate a shell command line within the chroot EOF exit 1 @@ -34,6 +34,7 @@ EOF cmd="$(basename "${0}")" jbase="${J_BASE:-$(realpath "$(dirname "${0}")/../")}" jname="${J_NAME:-$(basename "${1}")}" #" +juser="${J_USER}" # Remove jail name from argument stack, if passed in [ "${J_NAME}" ] || shift @@ -81,7 +82,7 @@ j_status() { j_up && meh "$(printf '\033[1;32mup\033[0m')" || meh "$(printf '\033[1;31mdown\033[0m')" } -# Mount /dev/pts and /proc in the jail +# Mount /dev/pts and /proc in the chroot j_start() { j_up && return 0 meh "starting ${jail} ..." @@ -89,14 +90,18 @@ j_start() { mount -t proc proc "${jdir}/proc" } -# Enter jail -j_exec() { +# Execute command in chroot +j_eval() { j_up || wtf "jail not up" meh "entering ${jail} ..." - exec env -i ${jenv} /usr/bin/chroot "${jdir}" /bin/su "${juser:-${USER}}" -c "${jshell}" -l + env -i ${jenv} /usr/bin/chroot "${jdir}" /bin/su "${juser:-${USER}}" -c "${*}" +} + +j_shell() { + j_eval "${jshell} -l" } -# Unmount /dev/pts and /proc in the jail +# Unmount /dev/pts and /proc in the chroot j_stop() { j_up || return 0 meh "stopping ${jail} ..." @@ -104,12 +109,14 @@ j_stop() { umount "${jdir}/dev/pts" } +# Populate jvars j_params "${jname}" case "${cmd}" in status) j_status ;; start) j_start ;; -enter|exec|shell) j_exec "${@}" ;; +shell|enter) j_shell ;; +eval) j_eval "${*}" ;; stop) j_stop ;; *) pebkac ;; esac -- 2.42.0