55 lines
1.1 KiB
Bash
55 lines
1.1 KiB
Bash
#! @bash@/bin/sh -e
|
||
|
||
usage() {
|
||
echo "Usage: $0 login <container-name>" >&2
|
||
echo " $0 root-shell <container-name>" >&2
|
||
}
|
||
|
||
args="`getopt --options '' -l help -- "$@"`"
|
||
eval "set -- $args"
|
||
while [ $# -gt 0 ]; do
|
||
case "$1" in
|
||
(--help) usage; exit 0;;
|
||
(--) shift; break;;
|
||
(*) break;;
|
||
esac
|
||
shift
|
||
done
|
||
|
||
action="$1"
|
||
if [ -z "$action" ]; then usage; exit 1; fi
|
||
shift
|
||
|
||
getContainerRoot() {
|
||
root="/var/lib/containers/$container"
|
||
if ! [ -d "$root" ]; then
|
||
echo "$0: container ‘$container’ does not exist" >&2
|
||
exit 1
|
||
fi
|
||
}
|
||
|
||
if [ $action = login ]; then
|
||
|
||
container="$1"
|
||
if [ -z "$container" ]; then usage; exit 1; fi
|
||
shift
|
||
|
||
getContainerRoot
|
||
|
||
exec @socat@/bin/socat "unix:$root/var/lib/login.socket" -,echo=0,raw
|
||
|
||
elif [ $action = root-shell ]; then
|
||
|
||
container="$1"
|
||
if [ -z "$container" ]; then usage; exit 1; fi
|
||
shift
|
||
|
||
getContainerRoot
|
||
|
||
exec @socat@/bin/socat "unix:$root/var/lib/root-shell.socket" -
|
||
|
||
else
|
||
echo "$0: unknown action ‘$action’" >&2
|
||
exit 1
|
||
fi
|