1
0
Fork 0

Add attach and exec
continuous-integration/drone/push Build is passing Details

main
Ambrose Chua 2019-01-09 11:36:46 +08:00
parent e5043d3c56
commit 9f6b0c9a09
1 changed files with 43 additions and 12 deletions

View File

@ -15,23 +15,29 @@ image="$CONTAINER_IMAGE"
show_help() {
cat << EOF
Usage: ${0##*/} [-hxw] [-n NAME] [-p PORT]... [-v LIST]... [CMD]...
Usage: ${0##*/} [-xwt] [-n NAME] [-p PORT]... [-v LIST]... [CMD]...
${0##*/} -l
${0##*/} -a NAME
${0##*/} -e NAME [CMD]...
${0##*/} -h
Starts an env Docker container. If CMD is specified, starts CMD
instead of a shell.
-h display this help and exit
-l list running containers and exit
-x delete Docker container after exit. will loose data
-w forward \$PWD into $CONTAINER_HOME/src, and start there
-n NAME give container a NAME
-p PORT forward host PORT to container PORT
-v LIST mount volume LIST. specify as LOCAL:MOUNT
-t run pwntools instead
-l list running containers and exit
-a NAME attach to a running container
-e NAME execute zsh or CMD on a running container
-h display this help and exit
EOF
}
show_running() {
list_running() {
docker ps \
--filter \
label=org.label-schema.vcs-url=https://git.makerforce.io/ambrose/env.git \
@ -39,7 +45,7 @@ docker ps \
"table {{.Names}}\t{{.RunningFor}}\t{{.Ports}}\t{{.Command}}"
}
while getopts "hlxwn:p:v:t" opt; do
while getopts "xwn:p:v:tla:e:h" opt; do
case "$opt" in
x)
delete="--rm "
@ -57,17 +63,25 @@ while getopts "hlxwn:p:v:t" opt; do
v)
volumes="$volumes\n\t-v '$OPTARG' "
;;
t)
image="$CONTAINER_IMAGE_PWN"
;;
l)
list_running
exit 0
;;
a)
mode_attach="true"
name="$OPTARG"
;;
e)
mode_execute="true"
name="$OPTARG"
;;
h)
show_help
exit 0
;;
l)
show_running
exit 0
;;
t)
image="$CONTAINER_IMAGE_PWN"
;;
:)
echo "Option -$OPTARG requires an argument." >&2
show_help
@ -88,6 +102,23 @@ if [ "$ports" = "\n\t" ]; then
ports=""
fi
if [ "$mode_attach" = "true" ]; then
docker attach \
$name
exit 0
fi
if [ "$mode_execute" = "true" ]; then
cmd="$@"
if [ -z "$@" ]; then
cmd="/bin/zsh"
fi
docker exec -it \
$name \
$cmd
exit 0
fi
docker pull $image
cmd="\n\