summaryrefslogtreecommitdiff
path: root/ezjail-admin
diff options
context:
space:
mode:
authorerdgeist <erdgeist@erdgeist.org>2007-09-15 00:25:52 +0000
committererdgeist <erdgeist@erdgeist.org>2007-09-15 00:25:52 +0000
commitc404a6ae6b583089d0b1d89edfb8a843a964f364 (patch)
tree3c894e1dac695e49b69af44f326eb4b12d05b4b2 /ezjail-admin
parent208937d79311db5858ca6eb12724538aec671ccb (diff)
introduced a console subcommand that allows attaching to a jail by it jailname. Also added documentation for that and the magic rc.d/ezjail.sh-proxy introduced before
Diffstat (limited to 'ezjail-admin')
-rwxr-xr-xezjail-admin51
1 files changed, 50 insertions, 1 deletions
diff --git a/ezjail-admin b/ezjail-admin
index 56290c9..372f30e 100755
--- a/ezjail-admin
+++ b/ezjail-admin
@@ -22,6 +22,7 @@ ezjail_flavours=${ezjail_flavours:-"${ezjail_jaildir}/flavours"}
22ezjail_portscvsroot=${ezjail_portscvsroot:-":pserver:anoncvs@anoncvs.at.FreeBSD.org:/home/ncvs"} 22ezjail_portscvsroot=${ezjail_portscvsroot:-":pserver:anoncvs@anoncvs.at.FreeBSD.org:/home/ncvs"}
23ezjail_sourcetree=${ezjail_sourcetree:-"/usr/src"} 23ezjail_sourcetree=${ezjail_sourcetree:-"/usr/src"}
24ezjail_uglyperlhack=${ezjail_uglyperlhack:-"YES"} 24ezjail_uglyperlhack=${ezjail_uglyperlhack:-"YES"}
25ezjail_default_execute=${ezjail_default_execute:-"/bin/sh"}
25 26
26ezjail_mount_enable=${ezjail_mount_enable:-"YES"} 27ezjail_mount_enable=${ezjail_mount_enable:-"YES"}
27ezjail_devfs_enable=${ezjail_devfs_enable:-"YES"} 28ezjail_devfs_enable=${ezjail_devfs_enable:-"YES"}
@@ -33,12 +34,13 @@ ezjail_dirlist="bin boot lib libexec rescue sbin usr/bin usr/games usr/include u
33case `uname -p` in amd64) ezjail_dirlist="${ezjail_dirlist} usr/lib32";; esac 34case `uname -p` in amd64) ezjail_dirlist="${ezjail_dirlist} usr/lib32";; esac
34 35
35# Synopsis messages 36# Synopsis messages
36ezjail_usage_ezjailadmin="Usage: ${ezjail_admin} [config|create|delete|install|list|update] {params}" 37ezjail_usage_ezjailadmin="Usage: ${ezjail_admin} [config|console|create|delete|install|list|update] {params}"
37ezjail_usage_install="Usage: ${ezjail_admin} install [-mps] [-h host] [-r release]" 38ezjail_usage_install="Usage: ${ezjail_admin} install [-mps] [-h host] [-r release]"
38ezjail_usage_create="Usage: ${ezjail_admin} create [-xbi] [-f flavour] [-r jailroot] [-s size] [-c bde|eli] [-C args] jailname jailip" 39ezjail_usage_create="Usage: ${ezjail_admin} create [-xbi] [-f flavour] [-r jailroot] [-s size] [-c bde|eli] [-C args] jailname jailip"
39ezjail_usage_delete="Usage: ${ezjail_admin} delete [-w] jailname" 40ezjail_usage_delete="Usage: ${ezjail_admin} delete [-w] jailname"
40ezjail_usage_update="Usage: ${ezjail_admin} update [-s sourcetree] [-i] [-pP]" 41ezjail_usage_update="Usage: ${ezjail_admin} update [-s sourcetree] [-i] [-pP]"
41ezjail_usage_config="Usage: ${ezjail_admin} config [-r run|norun] [-n newname] [-i attach|detach|fsck] jailname" 42ezjail_usage_config="Usage: ${ezjail_admin} config [-r run|norun] [-n newname] [-i attach|detach|fsck] jailname"
43ezjail_usage_console="Usage: ${ezjail_admin} console [-f] [-e command] jailname"
42ezjail_usage_list="Usage: ${ezjail_admin} list" 44ezjail_usage_list="Usage: ${ezjail_admin} list"
43 45
44################################ 46################################
@@ -639,6 +641,53 @@ install)
639 641
640 exerr "Could not find ezjail's rc.d script in ${ezjail_prefix}/etc/rc.d/. You need to type it the long way." 642 exerr "Could not find ezjail's rc.d script in ${ezjail_prefix}/etc/rc.d/. You need to type it the long way."
641 ;; 643 ;;
644######################## ezjail-admin CONSOLE ########################
645console)
646 # Clean variables, prevent polution
647 unset ezjail_execute ezjail_forcestart
648
649 shift; while getopts :e:f arg; do case ${arg} in
650 e) ezjail_execute=${OPTARG};;
651 f) ezjail_forcestart="YES";;
652 ?) exerr ${ezjail_usage_console};;
653 esac; done; shift $(( $OPTIND - 1 ))
654
655 # we need name of jail to attach to
656 [ $# -eq 1 ] || exerr ${ezjail_usage_console}
657
658 # Get all info we have on that jail
659 fetchjailinfo $1
660
661 # check for existence of jail in our records
662 [ -n "${ezjail_config}" ] || exerr "Error: Nothing known about jail ${ezjail_name}."
663
664 # if jail is not running, we either try to force start it or fail
665 if [ -z "${ezjail_id}" ]; then
666
667 # If force start is requested, try that
668 [ -n "$ezjail_forcestart}" ] || exerr "Error: Jail ${ezjail_name} appears not to be running, start it first (or use console -f for force start)."
669
670 echo "Trying to bring up ${ezjail_name} ..."
671 # Try to locate and run ezjails rc.d script
672 if [ -x "${ezjail_prefix}/etc/rc.d/ezjail" ]; then
673 (exec "${ezjail_prefix}/etc/rc.d/ezjail" start ${ezjail_name});
674 elif [ -x "${ezjail_prefix}/etc/rc.d/ezjail.sh" ]; then
675 (exec "${ezjail_prefix}/etc/rc.d/ezjail.sh" start ${ezjail_name});
676 else
677 exerr "Could not find ezjail's rc.d script in ${ezjail_prefix}/etc/rc.d/. You need to start ${ezjail_name} by hand."
678 fi
679
680 # See, if it is running now
681 fetchjailinfo ${ezjail_name}
682
683 [ -n "${ezjail_id}" ] || exerr "Error: Could not start ${ezjail_name}. You need to start it by hand."
684 fi
685
686 # Try to attach to jail
687 [ -n "${ezjail_execute}" ] && exec jexec ${ezjail_id} ${ezjail_execute}
688
689 exec jexec ${ezjail_id} ${ezjail_default_execute}
690 ;;
642######################## ezjail-admin CONFIG ######################## 691######################## ezjail-admin CONFIG ########################
643config) 692config)
644 # Clean variables, prevent polution 693 # Clean variables, prevent polution