Hallo ich habe eine Frage. Ich arbeite derzeit an einem Script, mit dem ich verschiedene Minecraftserver ansteuern kann. Aktuell muss ich für jeden Server eine eigene Funktion anlegen. Ich möchte aber eine Config File erstellen die Ungefähr so aufgebaut ist:
1 2 3 4 5 6 7 8 9 10 | server1: VERZECHNIS BESCHREIBUNG server2: VERZECHNIS BESCHREIBUNG server3: VERZECHNIS BESCHREIBUNG ... |
Wie kann ich nun die Informationen aus der Config File auslesen und in das Script einbinden? Aktuell sieht das ganze so aus:
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 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | Code #!/bin/bash BACKTITLE="Servermanager by Snycs" INPUT=/tmp/menu.sh.$$ OUTPUT=/tmp/output.sh.$$ trap "rm $OUTPUT; rm $INPUT; exit" SIGHUP SIGINT SIGTERM AKAMIE=/home/mc/ LOGFILE=/home/mc/Logs/Syslog_$(date +%d.%m.%Y).log DATE=$(date +%d.%m.%Y_%H:%M:%S_Uhr) DAY=$(date +%d.%m.%Y) ############################################################################################################ function fortschritt() { { for I in $(seq 1 100) ; do echo $I sleep 0.01 done echo 100; } | dialog --backtitle "[ F O R T S C H R I T T ]" \ --gauge "Fortschritt" 6 60 0 } ############################################################################################################ function server() { dialog --clear --backtitle "$BACKTITLE" \ --title "[ S E R V E R A U S W A H L ]" \ --menu "Die Server können mit den Pfeiltasten ausgewählt werden.\n\Bitte einen Server auswählen!" 15 50 7 \ Testserver "" \ Verlassen "Schliesst den Servermanager" 2>"${INPUT}" MENUITEM=$(<"${INPUT}") case $MENUITEM in Testserver) testserver;; Verlassen) echo "Bye"; break;; esac } #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ function testserver() { DIR=testserver dialog --clear --backtitle "$BACKTITLE" \ --title "[ T E S T S E R V E R ]" \ --menu "Die Aktionen können mit den Pfeiltasten ausgewählt werden.\n\Bitte einen Server auswählen!" 15 50 4 \ Starten "Startet den Server." \ Stoppen "Stoppt den Server." \ Restart "Startet den Server neu." \ Status "Zeigt den Serverstatus an." \ Konsole "Geht in die Kosole" \ Edit "Den Server bearbeiten" \ Test "Das ist ein Testeintrag" \ Verlassen "Schliesst den Servermanager" 2>"${INPUT}" MENUITEM=$(<"${INPUT}") case $MENUITEM in Starten) start;; Stoppen) stop;; Restart) restart;; Status) status;; Konsole) console;; Edit) edit;; Test) test;; Verlassen) echo "Bye"; break;; esac } #----------------------------------------------------------------------------------------------------------- ############################################################################################################ function start() { if screen -list | grep -q "$DIR"; then fortschritt dialog --title '[ F E H L E R ]' --msgbox 'Der Server ist bereits gestartet!' 5 40 else fortschritt dialog --title '[ E R F O L G R E I C H ]' --msgbox 'Der Server wurde gestartet!' 5 50 cd $AKAMIE/$DIR/ bash start.sh fi } function stop() { if screen -list | grep -q "$DIR"; then fortschritt screen -S $DIR -X quit if screen -list | grep -q "$DIR"; then dialog --title '[ F E H L E R ]' --msgbox 'Der Server wurde nicht gestoppt!' 5 50 else dialog --title '[ E R F O L G R E I C H ]' --msgbox 'Der Server wurde erfolgreich gestoppt!' 5 50 fi else dialog --title '[ F E H L E R ]' --msgbox 'Der Server ist nicht gestartet!' 5 50 fi } function restart() { screen -S $DIR -X quit fortschritt cd $AKAMIE/$DIR/ bash start.sh } function console() { screen -r $DIR } function edit () { cd $AKAMIE/$DIR/ mc } function status () { if screen -list | grep -q "$DIR"; then dialog --title '[ S T A T U S ]' --msgbox 'Der Server ist gestartet!' 5 50 else dialog --title '[ S T A T U S ]' --msgbox 'Der Server ist gestoppt!' 5 50 fi } ############################################################################################################ function log () { nano $LOGFILE } ############################################################################################################ ############################################################################################################ while true do dialog --clear --backtitle "$BACKTITLE" \ --title "[ H A U P T M E N Ü ]" \ --menu "Die verschiedenen Optionen können mit de Pfeiltasten ausgewählt werden.\n\ Bitte Aufgabe wählen!" 15 70 4 \ Server "Hier können die Server verwaltet werden." \ Backup "Hier können Backups erstellt werden." \ Log "Hiermit können die Logdateien eingesehen werden." \ Verlassen "Schliesst den Servermanager" 2>"${INPUT}" MENUITEM=$(<"${INPUT}") case $MENUITEM in Server) server;; Backup) backup;; Log) log;; Verlassen) echo "Bye"; break;; esac done [ -f $OUTPUT ] && rm $OUTPUT [ -f $INPUT ] && rm $INPUT |