diff options
Diffstat (limited to 'ezjail-admin')
-rwxr-xr-x | ezjail-admin | 51 |
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"} | |||
22 | ezjail_portscvsroot=${ezjail_portscvsroot:-":pserver:anoncvs@anoncvs.at.FreeBSD.org:/home/ncvs"} | 22 | ezjail_portscvsroot=${ezjail_portscvsroot:-":pserver:anoncvs@anoncvs.at.FreeBSD.org:/home/ncvs"} |
23 | ezjail_sourcetree=${ezjail_sourcetree:-"/usr/src"} | 23 | ezjail_sourcetree=${ezjail_sourcetree:-"/usr/src"} |
24 | ezjail_uglyperlhack=${ezjail_uglyperlhack:-"YES"} | 24 | ezjail_uglyperlhack=${ezjail_uglyperlhack:-"YES"} |
25 | ezjail_default_execute=${ezjail_default_execute:-"/bin/sh"} | ||
25 | 26 | ||
26 | ezjail_mount_enable=${ezjail_mount_enable:-"YES"} | 27 | ezjail_mount_enable=${ezjail_mount_enable:-"YES"} |
27 | ezjail_devfs_enable=${ezjail_devfs_enable:-"YES"} | 28 | ezjail_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 | |||
33 | case `uname -p` in amd64) ezjail_dirlist="${ezjail_dirlist} usr/lib32";; esac | 34 | case `uname -p` in amd64) ezjail_dirlist="${ezjail_dirlist} usr/lib32";; esac |
34 | 35 | ||
35 | # Synopsis messages | 36 | # Synopsis messages |
36 | ezjail_usage_ezjailadmin="Usage: ${ezjail_admin} [config|create|delete|install|list|update] {params}" | 37 | ezjail_usage_ezjailadmin="Usage: ${ezjail_admin} [config|console|create|delete|install|list|update] {params}" |
37 | ezjail_usage_install="Usage: ${ezjail_admin} install [-mps] [-h host] [-r release]" | 38 | ezjail_usage_install="Usage: ${ezjail_admin} install [-mps] [-h host] [-r release]" |
38 | ezjail_usage_create="Usage: ${ezjail_admin} create [-xbi] [-f flavour] [-r jailroot] [-s size] [-c bde|eli] [-C args] jailname jailip" | 39 | ezjail_usage_create="Usage: ${ezjail_admin} create [-xbi] [-f flavour] [-r jailroot] [-s size] [-c bde|eli] [-C args] jailname jailip" |
39 | ezjail_usage_delete="Usage: ${ezjail_admin} delete [-w] jailname" | 40 | ezjail_usage_delete="Usage: ${ezjail_admin} delete [-w] jailname" |
40 | ezjail_usage_update="Usage: ${ezjail_admin} update [-s sourcetree] [-i] [-pP]" | 41 | ezjail_usage_update="Usage: ${ezjail_admin} update [-s sourcetree] [-i] [-pP]" |
41 | ezjail_usage_config="Usage: ${ezjail_admin} config [-r run|norun] [-n newname] [-i attach|detach|fsck] jailname" | 42 | ezjail_usage_config="Usage: ${ezjail_admin} config [-r run|norun] [-n newname] [-i attach|detach|fsck] jailname" |
43 | ezjail_usage_console="Usage: ${ezjail_admin} console [-f] [-e command] jailname" | ||
42 | ezjail_usage_list="Usage: ${ezjail_admin} list" | 44 | ezjail_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 ######################## | ||
645 | console) | ||
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 ######################## |
643 | config) | 692 | config) |
644 | # Clean variables, prevent polution | 693 | # Clean variables, prevent polution |