From f14aa14b5f3e5f106366119f01f3b3190674343f Mon Sep 17 00:00:00 2001 From: Isaiah Stapleton Date: Wed, 17 Jan 2024 17:49:54 -0500 Subject: [PATCH] Add juphub-utils to base image Signed-off-by: Isaiah Stapleton --- containers/testing/base/Dockerfile | 2 + .../testing/base/juphub-utils/README.md | 14 +++++++ containers/testing/base/juphub-utils/dowork | 13 +++++++ containers/testing/base/juphub-utils/findtree | 3 ++ containers/testing/base/juphub-utils/ft | 1 + .../testing/base/juphub-utils/myaliases | 2 + .../base/juphub-utils/myjupyter_start.sh | 14 +++++++ containers/testing/base/juphub-utils/pubbk | 12 ++++++ .../testing/base/juphub-utils/reenable_jup.sh | 39 +++++++++++++++++++ containers/testing/base/juphub-utils/rejup | 1 + containers/testing/base/juphub-utils/sa | 1 + containers/testing/base/juphub-utils/setup.sh | 19 +++++++++ containers/testing/base/juphub-utils/spin | 21 ++++++++++ .../testing/base/juphub-utils/sshagent.sh | 17 ++++++++ .../testing/base/juphub-utils/validateASLR | 11 ++++++ containers/testing/base/juphub-utils/watchmem | 9 +++++ containers/testing/base/juphub-utils/whatjup | 3 ++ 17 files changed, 182 insertions(+) create mode 100644 containers/testing/base/juphub-utils/README.md create mode 100755 containers/testing/base/juphub-utils/dowork create mode 100755 containers/testing/base/juphub-utils/findtree create mode 120000 containers/testing/base/juphub-utils/ft create mode 100755 containers/testing/base/juphub-utils/myaliases create mode 100644 containers/testing/base/juphub-utils/myjupyter_start.sh create mode 100755 containers/testing/base/juphub-utils/pubbk create mode 100755 containers/testing/base/juphub-utils/reenable_jup.sh create mode 120000 containers/testing/base/juphub-utils/rejup create mode 120000 containers/testing/base/juphub-utils/sa create mode 100755 containers/testing/base/juphub-utils/setup.sh create mode 100755 containers/testing/base/juphub-utils/spin create mode 100755 containers/testing/base/juphub-utils/sshagent.sh create mode 100755 containers/testing/base/juphub-utils/validateASLR create mode 100755 containers/testing/base/juphub-utils/watchmem create mode 100755 containers/testing/base/juphub-utils/whatjup diff --git a/containers/testing/base/Dockerfile b/containers/testing/base/Dockerfile index 83aef98..04eec03 100755 --- a/containers/testing/base/Dockerfile +++ b/containers/testing/base/Dockerfile @@ -108,6 +108,8 @@ RUN /usr/local/bin/start.sh true; \ COPY start-notebook.d /usr/local/bin/start-notebook.d +COPY juphub-utils /opt/app-root/src/juphub-utils + ENV USER=$NB_USER # Change the ownership of the home directory to ope group so it starts up properly diff --git a/containers/testing/base/juphub-utils/README.md b/containers/testing/base/juphub-utils/README.md new file mode 100644 index 0000000..20ccd20 --- /dev/null +++ b/containers/testing/base/juphub-utils/README.md @@ -0,0 +1,14 @@ +# JUPYER HUB utilities + +This is a repo that contains a set of scripts that codify how I use jupyterhub +bu book instances where home directories are not persistent + +Clone this repo as bin in your persistent directory and then source the setup script + + +``` +cd /opt/app-root/src +git clone https://github.com/jappavoo/juphub-utils.git +./juphub-utils/setup.sh +``` + diff --git a/containers/testing/base/juphub-utils/dowork b/containers/testing/base/juphub-utils/dowork new file mode 100755 index 0000000..c70cd55 --- /dev/null +++ b/containers/testing/base/juphub-utils/dowork @@ -0,0 +1,13 @@ +#!/bin/bash +if [[ ! -a ~/Work && -a /opt/app-root/src ]]; then + echo "linking: ln -s /opt/app-root/src ~/Work" + ln -s /opt/app-root/src ~/Work +fi + +. sshagent.sh + +#watchmem + +echo "do this" +echo ". $ENVFILE" + diff --git a/containers/testing/base/juphub-utils/findtree b/containers/testing/base/juphub-utils/findtree new file mode 100755 index 0000000..f0f12f8 --- /dev/null +++ b/containers/testing/base/juphub-utils/findtree @@ -0,0 +1,3 @@ +#!/bin/bash + +find $@ | sed -e "s/[^-][^\/]*\// |/g" -e "s/|\([^ ]\)/|-\1/" diff --git a/containers/testing/base/juphub-utils/ft b/containers/testing/base/juphub-utils/ft new file mode 120000 index 0000000..00334bb --- /dev/null +++ b/containers/testing/base/juphub-utils/ft @@ -0,0 +1 @@ +findtree \ No newline at end of file diff --git a/containers/testing/base/juphub-utils/myaliases b/containers/testing/base/juphub-utils/myaliases new file mode 100755 index 0000000..80bb320 --- /dev/null +++ b/containers/testing/base/juphub-utils/myaliases @@ -0,0 +1,2 @@ +alias gl="git log --decorate --oneline --graph" +alias gll="gl --all" diff --git a/containers/testing/base/juphub-utils/myjupyter_start.sh b/containers/testing/base/juphub-utils/myjupyter_start.sh new file mode 100644 index 0000000..9413d60 --- /dev/null +++ b/containers/testing/base/juphub-utils/myjupyter_start.sh @@ -0,0 +1,14 @@ +if [[ -d /opt/app-root/src/juphub-utils ]]; then + cat >>~/.profile < /opt/conda/share/jupyter/lab/settings/overrides.json +{ + "@jupyterlab/terminal-extension:plugin": { + "shutdownOnClose": true + }, + "@jupyterlab/statusbar-extension:plugin": { + "visible": false + } +} +EOF + +echo "reload jupyterlab webpage for new setting to take effect" diff --git a/containers/testing/base/juphub-utils/rejup b/containers/testing/base/juphub-utils/rejup new file mode 120000 index 0000000..e0864be --- /dev/null +++ b/containers/testing/base/juphub-utils/rejup @@ -0,0 +1 @@ +reenable_jup.sh \ No newline at end of file diff --git a/containers/testing/base/juphub-utils/sa b/containers/testing/base/juphub-utils/sa new file mode 120000 index 0000000..9ddb088 --- /dev/null +++ b/containers/testing/base/juphub-utils/sa @@ -0,0 +1 @@ +sshagent.sh \ No newline at end of file diff --git a/containers/testing/base/juphub-utils/setup.sh b/containers/testing/base/juphub-utils/setup.sh new file mode 100755 index 0000000..48b3997 --- /dev/null +++ b/containers/testing/base/juphub-utils/setup.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# script to run after cloning the this repo +# will install the startup hook script that +# is part of this repo + +BASEDIR=${BASEDIR:-/opt/app-root/src} +STARTUPHOOK=${BASEDIR}/.myjupyter_start.sh +MYDIR=$(readlink -f $0) +MYDIR=$(dirname $MYDIR) +STARTUPHOOKSRC=${MYDIR}/myjupyter_start.sh + +if [[ ! -a ${STARTUPHOOK} ]]; then + if [[ -a ${STARTUPHOOKSRC} ]]; then + ln -s ${STARTUPHOOKSRC} ${STARTUPHOOK} + else + echo "ERROR: can't find ${STARTUPHOOKSRC}" + exit -1 + fi +fi diff --git a/containers/testing/base/juphub-utils/spin b/containers/testing/base/juphub-utils/spin new file mode 100755 index 0000000..86e6e78 --- /dev/null +++ b/containers/testing/base/juphub-utils/spin @@ -0,0 +1,21 @@ +#!/bin/bash +#set -x +duration=${1:-1.5} +delay=${2:-10} +typeset -i loops=$(echo "(60*60*$duration)/($delay*4)" | bc) +#echo "loops=$loops"; sleep 1 +for ((i=0; i $ENVFILE + . $ENVFILE + ssh-add + if ! grep -q $ENVFILE ~/.bashrc ; then + cat >> ~/.bashrc < /dev/null +EOF + fi +else + . $ENVFILE +fi diff --git a/containers/testing/base/juphub-utils/validateASLR b/containers/testing/base/juphub-utils/validateASLR new file mode 100755 index 0000000..dfea1d2 --- /dev/null +++ b/containers/testing/base/juphub-utils/validateASLR @@ -0,0 +1,11 @@ +#!/bin/bash + +count=$(for ((i=0;i<100; i++)); do gdb -ex starti -ex quit -q --batch /usr/bin/date 2>/dev/null | grep ld; done | tee out | uniq | wc -l) + +if [[ $count == 1 ]]; then + echo "OK: Looks good" + exit 0 +else + echo "ERROR: Failed to start a binary with a constant instruction addres: $count" + exit -1 +fi \ No newline at end of file diff --git a/containers/testing/base/juphub-utils/watchmem b/containers/testing/base/juphub-utils/watchmem new file mode 100755 index 0000000..4b1d156 --- /dev/null +++ b/containers/testing/base/juphub-utils/watchmem @@ -0,0 +1,9 @@ +#!/bin/bash +MYDIR=$(readlink -f $0) +MYDIR=$(dirname $MYDIR) + +#echo $MYDIR + +# from Erwan Granger @ Redhat + +watch " ps -eo size,command --sort -size | awk '{ hr=\$1/1024 ; sum +=hr} END {print sum \" MB of memory used\" }' | tee $MYDIR/watchmem.last" diff --git a/containers/testing/base/juphub-utils/whatjup b/containers/testing/base/juphub-utils/whatjup new file mode 100755 index 0000000..c0bcd67 --- /dev/null +++ b/containers/testing/base/juphub-utils/whatjup @@ -0,0 +1,3 @@ +#!/bin/bash +env | grep -i hub_host +env | grep -i image