Hi, ich habe da ein Problem. Und zwar habe ich vor beim SSH Login, Screen zu nutzen, da wir aber immer mal wieder eine zusätzliche Session benötigen, wollte ich dies mit einer abfrage lösen, wie bei https://superuser.com/questions/580087/automatically-start-screen-upon-ssh-login, aber das in eine CASE abfrage.
Ich habe aktuell das Problem, das die CASE deshalb Dynamisch sein muss und hatte es mit einer FOR schleife probiert (Zeile 52), CASE mag aber anscheinend keine schleifen.
Wie kann ich dies am besten lösen? Und vielleicht kennt der ein oder andere noch ein paar Optimierungen 😉
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | #!/bin/sh show_menu() { NORMAL=$(echo "\033[m") MENU=$(echo "\033[36m") #Blue NUMBER=$(echo "\033[33m") #yellow FGRED=$(echo "\033[41m") RED_TEXT=$(echo "\033[31m") ENTER_LINE=$(echo "\033[33m") value=$( screen -ls |grep '\<.*Detached\>' |wc -l ); eval varID=$(screen -ls |grep '\<.*Detached\>' | sed -E 's/\s+([0-9]+)\..*/\1/') echo -e "${MENU}*********************************************${NORMAL}" for ((i=0;i<${value};++i)); do echo -e "${MENU}**${NUMBER} $[i+1])${MENU} Verbunde mit ${varID[$i]} ${NORMAL}" done echo -e "" echo -e "${MENU}**${NUMBER} N)${MENU} Neue Verbindung ${NORMAL}" echo -e "" echo -e "${MENU}**${NUMBER} X)${MENU} Verbindung trennen ${NORMAL}" echo -e "${MENU}*********************************************${NORMAL}" echo -e "${ENTER_LINE}Please enter a menu option and enter or ${RED_TEXT}enter to exit. ${NORMAL}" read opt } function option_picked() { COLOR='\033[01;31m' # bold red RESET='\033[00;00m' # normal white MESSAGE=${@:-"${RESET}Error: No message passed"} echo -e "${COLOR}${MESSAGE}${RESET}" } function check() { if [ "$value" -gt 1 ]; then while [ opt != '' ] do menu; done fi } function menu() { value=$( screen -ls |grep '\<.*Detached\>' |wc -l ); eval varID=$(screen -ls |grep '\<.*Detached\>' | sed -E 's/\s+([0-9]+)\..*/\1/') if [ "$value" -gt 1 ]; then while [ opt != '' ] do if [[ $opt = "" ]]; then exit; else case $opt in for ((i=0;i<${value};++i)); do $[i+1]) clear; option_picked "Option $[i+1] Picked"; screen -R "${varID[$i]}" menu; ;; done n) clear; option_picked "Option N Picked"; screen -q show_menu; ;; x)exit; ;; \n)exit; ;; *)clear; option_picked "Pick an option from the menu"; show_menu; ;; esac fi done fi } if [ -z "$STY" ]; then clear show_menu; check; else screen -R fi |