From 40b413c8ae011b48fb967bb79961cc3721db202b Mon Sep 17 00:00:00 2001 From: Sarah Vaupel Date: Mon, 23 Oct 2023 14:38:37 +0200 Subject: [PATCH] add util scripts --- launch-terminal/dev.sh | 54 ++++++++++++++++++++++++++++++++ launch-terminal/local.sh | 11 +++++++ launch-terminal/uni2work-dev1.sh | 54 ++++++++++++++++++++++++++++++++ monitor/all_servers.sh | 8 +++++ monitor/pg_top.sh | 9 ++++++ sshfs/start.sh | 15 +++++++++ sshfs/stop.sh | 11 +++++++ utils/check_connection.sh | 12 +++++++ utils/config.sh | 38 ++++++++++++++++++++++ 9 files changed, 212 insertions(+) create mode 100755 launch-terminal/dev.sh create mode 100755 launch-terminal/local.sh create mode 100755 launch-terminal/uni2work-dev1.sh create mode 100755 monitor/all_servers.sh create mode 100755 monitor/pg_top.sh create mode 100755 sshfs/start.sh create mode 100755 sshfs/stop.sh create mode 100755 utils/check_connection.sh create mode 100644 utils/config.sh diff --git a/launch-terminal/dev.sh b/launch-terminal/dev.sh new file mode 100755 index 0000000..df37d6f --- /dev/null +++ b/launch-terminal/dev.sh @@ -0,0 +1,54 @@ +#!/bin/sh + +U2W_UTILS_DIR=$(dirname `readlink -f "$0"`)/.. + +REMOTE_COMMAND="\$SHELL -l" +REMOTE_DIR="~" +DO_DEVELOP=false + +DO_CHECK_CONNECTION=false +VERBOSE_MODE=false + +source $U2W_UTILS_DIR/utils/config.sh + +while true; do + case $1 in + --project ) + REMOTE_COMMAND="cd ~/$2; \$SHELL -l" + shift 2;; + --nix-shell ) + REMOTE_COMMAND="NIXPKGS_ALLOW_UNFREE=1 nix-shell --packages nodejs chromium reuse pre-commit --command \"zsh -i -is eval 'cd $2'\"" + shift 2;; + --develop ) + REMOTE_COMMAND="zsh -i -is eval 'cd $2; develop'" + shift 2;; + --dont-check-connection ) + DO_CHECK_CONNECTION=false + shift;; + --verbose ) + VERBOSE_MODE=true + shift;; + -- ) shift; break;; + * ) + # if $VERBOSE_MODE; then + # echo "Invalid option: $1" + # fi + break;; + esac +done + +if $DO_CHECK_CONNECTION; then + if $VERBOSE_MODE; then + echo "Checking connection..." + fi + source $U2W_UTILS_DIR/utils/check_connection.sh + if $VERBOSE_MODE; then + echo " ... done" + fi +fi + +if $VERBOSE_MODE; then + echo "Opening ssh session to $REMOTE_HOST_SHORT..." +fi + +ssh -t $REMOTE_HOST "$REMOTE_COMMAND" diff --git a/launch-terminal/local.sh b/launch-terminal/local.sh new file mode 100755 index 0000000..338af16 --- /dev/null +++ b/launch-terminal/local.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +U2W_UTILS_DIR=$(dirname `readlink -f "$0"`)/.. + +source $U2W_UTILS_DIR/utils/config.sh + +source $U2W_UTILS_DIR/sshfs/start.sh + +cd $LOCAL_U2W_DIR_SHORT + +$SHELL diff --git a/launch-terminal/uni2work-dev1.sh b/launch-terminal/uni2work-dev1.sh new file mode 100755 index 0000000..b1a0d1f --- /dev/null +++ b/launch-terminal/uni2work-dev1.sh @@ -0,0 +1,54 @@ +#!/bin/sh + +U2W_UTILS_DIR=$(dirname `readlink -f "$0"`)/.. + +REMOTE_COMMAND="\$SHELL -l" +REMOTE_DIR="~" +DO_DEVELOP=false + +DO_CHECK_CONNECTION=false +VERBOSE_MODE=false + +source $U2W_UTILS_DIR/utils/config.sh + +while true; do + case $1 in + --project ) + REMOTE_COMMAND="cd ~/$2; \$SHELL -l" + shift 2;; + --nix-shell ) + REMOTE_COMMAND="NIXPKGS_ALLOW_UNFREE=1 nix-shell --packages nodejs chromium reuse pre-commit --command \"zsh -i -is eval 'cd $2'\"" + shift 2;; + --develop ) + REMOTE_COMMAND="NIXPKGS_ALLOW_UNFREE=1 nix-shell --packages nodejs chromium reuse pre-commit --command \"zsh -i -is eval 'cd $2; develop'\"" + shift 2;; + --dont-check-connection ) + DO_CHECK_CONNECTION=false + shift;; + --verbose ) + VERBOSE_MODE=true + shift;; + -- ) shift; break;; + * ) + # if $VERBOSE_MODE; then + # echo "Invalid option: $1" + # fi + break;; + esac +done + +if $DO_CHECK_CONNECTION; then + if $VERBOSE_MODE; then + echo "Checking connection..." + fi + source $U2W_UTILS_DIR/utils/check_connection.sh + if $VERBOSE_MODE; then + echo " ... done" + fi +fi + +if $VERBOSE_MODE; then + echo "Opening ssh session to $REMOTE_HOST_SHORT..." +fi + +ssh -t $REMOTE_HOST_SHORT "$REMOTE_COMMAND" diff --git a/monitor/all_servers.sh b/monitor/all_servers.sh new file mode 100755 index 0000000..5070f6c --- /dev/null +++ b/monitor/all_servers.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +tmux new-session -d "ssh -t uniworx3 \"watch -c SYSTEMD_COLORS=1 systemctl status -n0 'uni2work@*.service'\"" +tmux split-window -h "ssh -t uniworx4 \"watch -c SYSTEMD_COLORS=1 systemctl status -n0 'uni2work@*.service'\"" +tmux split-window -h "ssh -t uniworx5 \"watch -c SYSTEMD_COLORS=1 systemctl status -n0 'uni2work@*.service'\"" +tmux split-window -h "ssh -t uniworxdb2 \"sudo -Hsu postgres pg_top -I -s 1\"" +tmux select-layout even-horizontal +tmux -2 attach-session -d diff --git a/monitor/pg_top.sh b/monitor/pg_top.sh new file mode 100755 index 0000000..305c6c0 --- /dev/null +++ b/monitor/pg_top.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +#source $(dirname `readlink -f "$0"`)/../utils/config.sh + +DB_HOST_SHORT="uniworxdb2" + +#source $U2W_UTILS_DIR/utils/check_connection.sh + +ssh -t $DB_HOST_SHORT "sudo -Hsu postgres pg_top -I -s 1" diff --git a/sshfs/start.sh b/sshfs/start.sh new file mode 100755 index 0000000..0a7a0ec --- /dev/null +++ b/sshfs/start.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +U2W_UTILS_DIR=$(dirname `readlink -f "$0"`)/.. + +source $U2W_UTILS_DIR/utils/config.sh + +source $U2W_UTILS_DIR/utils/check_connection.sh + +# create local development directory if it does not exist already +mkdir -p $LOCAL_U2W_DIR + +# mount the remote development directory +if [ -z "$(ls -A $LOCAL_U2W_DIR)" ]; then + sshfs -o reconnect -o ServerAliveInterval=15 $REMOTE_HOST_SHORT:$REMOTE_U2W_DIR $LOCAL_U2W_DIR +fi diff --git a/sshfs/stop.sh b/sshfs/stop.sh new file mode 100755 index 0000000..1c46f91 --- /dev/null +++ b/sshfs/stop.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +source $(dirname `readlink -f "$0"`)/../utils/config.sh + +if [ -d "$LOCAL_U2W_DIR" ]; then + mountpoint --quiet $LOCAL_U2W_DIR + if [ $? -eq 0 ]; then + fusermount -u $LOCAL_U2W_DIR + rmdir $LOCAL_U2W_DIR + fi +fi diff --git a/utils/check_connection.sh b/utils/check_connection.sh new file mode 100755 index 0000000..bad653f --- /dev/null +++ b/utils/check_connection.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +source $(dirname `readlink -f "$0"`)/../utils/config.sh + +ping -q -c 1 $REMOTE_HOST > /dev/null +if [ $? -ne 0 ]; then + ERR_NO_CONNECTION="Cannot connect to $REMOTE_HOST. Please check your internet connection and make sure that you are connected to the MWN." + ERR_NO_CONNECTION_SHORT="Cannot connect to $REMOTE_HOST_SHORT" + echo $ERR_NO_CONNECTION + notify-send -c "network.disconnected" -i network-offline "$ERR_NO_CONNECTION_SHORT" "$ERR_NO_CONNECTION" + exit 1 +fi diff --git a/utils/config.sh b/utils/config.sh new file mode 100644 index 0000000..3513b4c --- /dev/null +++ b/utils/config.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +##### srv01.uniworx.de ##### +# +REMOTE_HOST=srv01.uniworx.de +REMOTE_HOST_SHORT=srv01 +# +REMOTE_U2W_DIR=~/Projects/LMU/Uni2work/Uni2work +REMOTE_U2W_DIR_SHORT=~/u2w +# +REMOTE_FRADRIVE_DIR=~/Projects/Fraport/FraDrive/FraDrive +REMOTE_FRADRIVE_DIR_SHORT=~/fradrive +# +##### + +##### uni2work-dev1 ##### +# +#REMOTE_HOST=uni2work-dev1.ifi.lmu.de +#REMOTE_HOST_SHORT=uni2work-dev1 +# +#REMOTE_U2W_DIR=~/Projects/Uni2work/Uni2work +#REMOTE_U2W_DIR_SHORT=~/u2w +# +#REMOTE_FRADRIVE_DIR=~/Projects/FraDrive/FraDrive +#REMOTE_FRADRIVE_DIR_SHORT=~/fradrive +# +# +##### + +##### localhost (sshfs) ##### +# +#LOCAL_U2W_DIR=~/Projects/Uni2work/Uni2work +#LOCAL_U2W_DIR_SHORT=~/u2w +# +#LOCAL_U2W_SSHFS_DIR=~/Projects/Uni2work/Uni2work-Remote +#LOCAL_U2W_SSHFS_DIR_SHORT=~/u2w-rem +# +#####