[Gelöst] XAMPP Webserver – Wie Bash-Skripts ausführen?

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Benutzeravatar
RobbiBlechdose
Beiträge: 20
Registriert: 23.06.2016 20:20:45

[Gelöst] XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von RobbiBlechdose » 23.06.2016 20:27:07

Hallo zusammen,
ich habe auf einem alten PC Debian mit LXDE aufgesetzt und einen Minecraft-Server installiert. Das läuft an sich ganz gut, nur hätte ich gerne ein Webinterface zum Starten und Stoppen des Servers.
Dazu habe ich in HTML eine Index.html geschrieben, die alles nötige enthält. Das ganze läuft auf einem normalen XAMPP-Server. Das Problem ist jetzt, dass ich gerne Skripte vom Webinterface (der Index.html) ausführen würde (zum Starten und Stoppen des Servers).
Hier ist ein Button-Code:

Code: Alles auswählen

<button style="background-color: #33ff33;" type="button" onClick="location.href='/cgi-bin/Exec_Start'">Server starten</button>
Die Datei liegt im htdocs von XAMPP, das Shell-Script im angegebenen Ordner. Nur machen tut es nichts. Bei manueller Auführung funzt alles, aber halt nicht vom Webinterface aus.
Irgendwelche Ideen, wie man das machen kann?

Vielen Dank im Voraus für Antworten
Zuletzt geändert von RobbiBlechdose am 01.07.2016 17:18:37, insgesamt 1-mal geändert.

Benutzeravatar
RobbiBlechdose
Beiträge: 20
Registriert: 23.06.2016 20:20:45

Re: XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von RobbiBlechdose » 26.06.2016 11:19:56

Kleines Update:
Das cgi-Skript wird ausgeführt (Browser zeigt auch die "echo"-Zeile an), aber die "Weiterleitung" an ein anderes Skript (z.B. "sh /root/Schreibtisch/Start_Server.sh") oder "cd /root/Schreibtisch/MC" und "java -jar forge.jar" sowie "pkill java" gehen nicht. Die error-log des Servers (apache auf XAMPP) zeigt für "pkill" "Operation not permitted" und für "cd" "could not cd". Bei sudo und dann die Befehle kommt "no ask specified" oder so ähnlich.
Irgendwelche Ideen?

Dimejo
Beiträge: 503
Registriert: 21.07.2014 13:37:23

Re: XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von Dimejo » 26.06.2016 11:37:43

RobbiBlechdose hat geschrieben:Bei sudo und dann die Befehle kommt "no ask specified" oder so ähnlich.
Hast Du www-data mit visudo ausreichend Rechte für diese Befehle verschafft?

Wenn Du willst, dass sich das jemand näher ansieht, wäre es toll wenn Du das Skript, einen relevanten Logauszug und die relevanten Verzeichnisrechte zur Verfügung stellst. Und damit meine ich Copy & Paste, damit wir auch Tippfehler ausschließen können.

Benutzeravatar
RobbiBlechdose
Beiträge: 20
Registriert: 23.06.2016 20:20:45

Re: XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von RobbiBlechdose » 26.06.2016 12:07:36

Erstmal vielen Dank für die Antwort!
Das habe ich tatsächlich nicht gemacht...
Wie wäre denn die genaue zeile für visudo?
Hier sind die Logauszüge:

Code: Alles auswählen

[Sat Jun 25 21:25:27.079106 2016] [cgi:error] [pid 2905] [client ::1:48206] AH01215: : /opt/lampp/cgi-bin/Exec_Stop, referer: http://localhost/
[Sat Jun 25 21:25:27.079161 2016] [cgi:error] [pid 2905] [client ::1:48206] AH01215: sudo: no tty present and no askpass program specified: /opt/lampp/cgi-bin/Exec_Stop, referer: http://localhost/

[Sat Jun 25 20:22:41.513085 2016] [cgi:error] [pid 7257] [client ::1:37214] AH01215: sh: 0: : /opt/lampp/cgi-bin/Exec_Start, referer: http://localhost/
[Sat Jun 25 20:22:41.513184 2016] [cgi:error] [pid 7257] [client ::1:37214] AH01215: Can't open /root/Schreibtisch/Start_Server.sh: /opt/lampp/cgi-bin/Exec_Start, referer: http://localhost/
[Sat Jun 25 20:22:41.513215 2016] [cgi:error] [pid 7257] [client ::1:37214] AH01215: : /opt/lampp/cgi-bin/Exec_Start, referer: http://localhost/
[Sat Jun 25 20:22:50.425075 2016] [cgi:error] [pid 1275] [client ::1:37215] AH01215: sh: 0: Can't open pkill: /opt/lampp/cgi-bin/Exec_Stop, referer: http://localhost/
[Sat Jun 25 20:23:11.316410 2016] [cgi:error] [pid 1276] [client ::1:37217] AH01215: sh: 0: Can't open pkill: /opt/lampp/cgi-bin/Exec_Stop, referer: http://localhost/

[Sat Jun 25 20:18:13.858019 2016] [cgi:error] [pid 1278] [client ::1:37209] AH01215: pkill: : /opt/lampp/cgi-bin/Exec_Stop, referer: http://localhost/
[Sat Jun 25 20:18:13.858121 2016] [cgi:error] [pid 1278] [client ::1:37209] AH01215: killing pid 1411 failed: /opt/lampp/cgi-bin/Exec_Stop, referer: http://localhost/
[Sat Jun 25 20:18:13.858176 2016] [cgi:error] [pid 1278] [client ::1:37209] AH01215: : Operation not permitted: /opt/lampp/cgi-bin/Exec_Stop, referer: http://localhost/

[Sat Jun 25 21:29:11.067690 2016] [cgi:error] [pid 1266] [client ::1:48208] AH01215: can't cd to /root/Schreibtisch/MC_ULTRA_Mini_Server: /opt/lampp/cgi-bin/Exec_Start, referer: http://localhost/
[Sat Jun 25 21:29:11.067720 2016] [cgi:error] [pid 1266] [client ::1:48208] AH01215: : /opt/lampp/cgi-bin/Exec_Start, referer: http://localhost/
[Sat Jun 25 21:29:11.069742 2016] [cgi:error] [pid 1266] [client ::1:48208] AH01215: Error: Unable to access jarfile forge-1.7.10-10.13.4.1558-1.7.10-universal.jar: /opt/lampp/cgi-bin/Exec_Start, referer: http://localhost/
[Sat Jun 25 21:29:11.069800 2016] [cgi:error] [pid 1266] [client ::1:48208] AH01215: : /opt/lampp/cgi-bin/Exec_Start, referer: http://localhost/
Die Skripte:

Code: Alles auswählen

#!/bin/sh

echo "Content-type: text/plain; charset=iso-8859-1"
echo
echo "Server startet..."
#sh /root/Schreibtisch/Start_Server.sh
cd /root/Schreibtisch/MC_ULTRA_Mini_Server
java -Xms128M -Xmx1024M -jar forge-1.7.10-10.13.4.1558-1.7.10-universal.jar nogui

Code: Alles auswählen

#!/bin/sh

echo "Content-type: text/plain"
echo
echo "Server wird heruntergefahren..."
pkill java

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von eggy » 26.06.2016 12:20:34

Dir ist aber schon klar, dass Du damit nicht nur "den einen richtigen" Javaprozess abschießt, sondern alle? Mag im aktuellen Fall vielleicht egal sein, aber spätestens wenns um ne andere Umgebung geht (oder Du auf der Kiste nicht mehr alleine bist) gibts mit sowas echt Probleme. Hier im Forum waren Start- und Stopscripte schon öfters mal nen Thema, einfach mal die Suche bemühen, da sollten sich genug Threads finden, in denen erklärt ist, wie man sowas "richtig" macht.

Benutzeravatar
RobbiBlechdose
Beiträge: 20
Registriert: 23.06.2016 20:20:45

Re: XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von RobbiBlechdose » 26.06.2016 12:25:32

Gibt es denn eine bessere Lösung für den MC-Server?
Das Hauptproblem ist außerdem immernoch, dass die wichtigen Befehle nicht ausgeführt werden, optimieren kann ich später immer noch.

Benutzeravatar
RobbiBlechdose
Beiträge: 20
Registriert: 23.06.2016 20:20:45

Re: XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von RobbiBlechdose » 26.06.2016 16:16:58

Habe bei visudo die Zeile "www-data ALL = NOPASSWD: /opt/lampp" hinzugefügt, das Problem mit "no askpass specified" bleib bestehen. Irgendwelche Ideen?

DeletedUserReAsG

Re: XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von DeletedUserReAsG » 26.06.2016 17:42:09

Sinnvoller, als sich auf die Art ’n Sicherheitsloch groß wie’n Scheunentor Flugzeughangartor auf die Kiste zu bauen, wäre es vielleicht, den Owner/die Rechte des Pfades und der Scripte passend zu setzen.

Benutzeravatar
RobbiBlechdose
Beiträge: 20
Registriert: 23.06.2016 20:20:45

Re: XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von RobbiBlechdose » 26.06.2016 18:08:37

Die Skripte haben chmod 775 bzw. 777. Funzt trotzdem nicht.

uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

Re: XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von uname » 27.06.2016 08:12:57

Gibt es einen Grund für XAMPP? Das ist eher eine Entwicklerumgebung bzw. wird gerne bei Windows genutzt, da es dort keine ordentliche Paketverwaltung gibt. Dein XAMPP enthält einen Apache2, wahrscheinlich MariaDB, PHP und Perl. Aber warum installierst du dieses Entwickler-Zeug, wenn du es gar nicht brauchst?

https://wiki.ubuntuusers.de/XAMPP/

Du brauchst eher Debianapache2 mit der Möglichkeit Scripte zu starten. In welcher Programmiersprache ist das Script überhaupt geschrieben? Und dann sudo? Dass ist ja alles zusammen fast so schrecklich wie Webmin. Liegt aber wohl eher am Programmieransatz.

Kleine Alternativlösung:
Du schreibst ein ordentliches Stück HTML mit PHP, wo du beim Wunsch für eine root-Aktion einfach eine Datei irgendwo vom Webserver (www-data) in die erlaubte Struktur schreiben lässt (/var/www/html/restart.txt, Inhalt leer). Nun läuft root mit Cron jede Minute über diese Datei und wenn sie da ist haut er entsprechend die Prozesse einfach weg und löscht dann auch diese Datei. Dauert dann zwar etwas länger (maximal 1 Minute) aber ist auch schöner programmiert. Vor allem hast du eine ordentliche Benutzertrennung und nicht diese excec-Sicherheitslücken und dieses unnötige sudo-Zeug.
Hierzu brauchst du kein XAMPP, sondern Debianapache2, Debianphp5 und Debianlibapache2-mod-php5 . Evtl. musst du PHP als Modul noch aktivieren. Vielleicht postet dir auch gleich jemand das 10-Zeile PHP-Programm und den 5-Zeilen-Cron-Job.

Als Alternative zu Cron kannst du dir noch Debianincron anschauen. Habe ich aber auch noch nicht genutzt und da dein Neustart deiner Anwendung wohl nicht wirklich zeitkritisch ist kannst auch du wahrscheinlich darauf verzichten.

Benutzeravatar
RobbiBlechdose
Beiträge: 20
Registriert: 23.06.2016 20:20:45

Re: XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von RobbiBlechdose » 27.06.2016 20:32:41

Vielen Dank für die lange Antwort!
Tatsächlich bin ich relativ neu, was Serverbetrieb angeht. XAMPP sah halt einfach zu installieren aus, vor allem, weil ich vorher öfters Probleme mit nichtvorhandenden Dependencies hatte, die ich mir manuell aus der Online-Repo ziehen musste.
Es wäre sehr nett, wenn jemand mir mit dem PHP und Cronjob helfen könnte, da kenne ich mich leider garnicht aus. HTML-Datei existiert ja schon. :D
Das mit den Installationstipps probiere ich dann aus. Erstmal noch XAMPP runterschmeißen.

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von thoerb » 27.06.2016 20:33:19

uname hat geschrieben:. Vielleicht postet dir auch gleich jemand das 10-Zeile PHP-Programm...
Mal auf die Schnelle...

Code: Alles auswählen

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
         <div><button style="background-color: #33ff33;" type="button" onClick="location.href='<?php echo $_SERVER['PHP_SELF']."?write=1" ?>'">Server starten</button></div>
        <?php
            $write = $_GET['write'];
     
            if ($write == 1){
            $file = fopen('/var/www/html/restart.txt', 'w');
            fwrite($file);
            fclose($file);
            echo "Server wird neu gestartet.";
            }
?>
    </body>
</html>

Benutzeravatar
RobbiBlechdose
Beiträge: 20
Registriert: 23.06.2016 20:20:45

Re: XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von RobbiBlechdose » 27.06.2016 21:24:26

Danke sehr!
Aber ich hätte noch ein paar Fragen:
Was genau macht das PHP-Skript?
Und ist restart.txt eine spezielle Datei oder kann die halt einfach leer sein?

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von thoerb » 27.06.2016 21:55:26

RobbiBlechdose hat geschrieben:Danke sehr!
Aber ich hätte noch ein paar Fragen:
Was genau macht das PHP-Skript?
Und ist restart.txt eine spezielle Datei oder kann die halt einfach leer sein?
Wenn du auf den Button klickst, wird in /var/www/html/ eine leere Datei restart.txt angelegt (vorausgesetzt, dass du dort die entsprechenden Schreibrechte hast ). Das ist keine spezielle Datei und die könnte auch beliebig anders heißen.

Edit: Und der Pfad muss auch nicht zwingend /var/www/html/ sein.

Jetzt fehlt dir nur noch der Cron-Job, der prüft ob die Datei vorhanden ist und dann den Server neu startet und diese Datei anschließend wieder löscht oder was du halt genau vor hast. Vielleicht kann dir damit jemand anders helfen, denn mit Cron-Jobs habe ich schon lange nichts mehr gemacht.
Zuletzt geändert von thoerb am 27.06.2016 22:09:16, insgesamt 1-mal geändert.

Benutzeravatar
RobbiBlechdose
Beiträge: 20
Registriert: 23.06.2016 20:20:45

Re: XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von RobbiBlechdose » 27.06.2016 22:09:02

Vielen Dank dafür!
Hier fehlt ein "Gut" oder "+1" Button. Deswegen: :THX:

uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

Re: XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von uname » 28.06.2016 15:13:33

Im nächsten Schritt schreibst du erst mal ein Programm:

/usr/local/sbin/restart.sh:

Code: Alles auswählen

#!/bin/bash
file="/var/www/html/restart.txt"
if [ -f "$file" ]
then
        echo "$file gefunden."
else
        echo "$file nicht gefunden."
fi
Ausführbar machen:

Code: Alles auswählen

chmod 755 /usr/local/sbin/restart.sh
Nun führst du als root aus:

Code: Alles auswählen

/usr/local/sbin/restart.sh
Je nachdem ob die Datei vorhanden ist oder nicht sollte die Ausgabe unterschiedlich sein.
Die Datei musst du noch manuell zwischendurch löschen. Lege sie aber über die Webseite entsprechend an. Teste. Lösche sie als root. Teste erneut usw.
Sollte das gehen kannst du dich wieder melden. Dann kommt der letzte Schritt.

Benutzeravatar
RobbiBlechdose
Beiträge: 20
Registriert: 23.06.2016 20:20:45

Re: XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von RobbiBlechdose » 28.06.2016 19:29:26

Die HTML/PHP Datei legt interessanterweise leider keine .txt an.
Falls ich den Code in eine separate .php packe (und den Fehler bei fwrite entferne, es fehlte ein String zum reinschreiben, ich habe einfach "Start" angegeben), bekomme ich bei Aufruf über den Browser in der error.log von apache2 ein Permission Denied...

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von thoerb » 28.06.2016 19:47:08

RobbiBlechdose hat geschrieben:Die HTML/PHP Datei legt interessanterweise leider keine .txt an.
Falls ich den Code in eine separate .php packe (und den Fehler bei fwrite entferne, es fehlte ein String zum reinschreiben, ich habe einfach "Start" angegeben), bekomme ich bei Aufruf über den Browser in der error.log von apache2 ein Permission Denied...
Die Zeile mit dem fwrite kannst eigentlich weglassen, es soll ja nur eine leere Datei angelegt werden. Aber wenn du da was reinschreibst, stört es auch nicht.

Wenn die Datei nicht geschrieben werden kann, liegt das wohl an fehlenden Rechten ich /var/www/html. Darauf hatte ich aber schon hingewiesen.

wanne
Moderator
Beiträge: 7462
Registriert: 24.05.2010 12:39:42

Re: XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von wanne » 28.06.2016 21:10:53

RobbiBlechdose hat geschrieben:Tatsächlich bin ich relativ neu, was Serverbetrieb angeht. XAMPP sah halt einfach zu installieren aus, vor allem, weil ich vorher öfters Probleme mit nichtvorhandenden Dependencies hatte, die ich mir manuell aus der Online-Repo ziehen musste.
Ja einfach zu installieren und unmöglich zu warten. Du hast die zwei Sicherheitslücken gefixt, die das Ding sei Mai wieder hatte?
XMPP besteht auf ca. 40 Programmen die zum groß teil erstmals laufen. Die alle sicher zu konfigurieren und aktuell zu halten ist eine Mammutaufgabe. (Und für Leute, die die nicht mal aufzählen können garantiert unmöglich. (Wenn du weißt, welche Progamme du benötigst, lädst du dir die runter und nicht das ganze Bundel mit massenweise Müll.))
Ganz nett für Leute die mal ausprobieren und keine Ahnung haben aber auf einem Rechner in dem in irgend einer weise ein Netzwerkkabel steckt hat das nichts zu suchen.

Im Moment geht's gerade wieder aber zu Hochzeiten hatte ich auf meinem Serrver so ca. 10Anfragen/s die nur darauf aus wahren XAMPP Installationen zu übernehmen. Und das nicht ohne Grund. Die Dinger sind DIE Grundlage für Spamschleudern.
uname hat geschrieben:Du schreibst ein ordentliches Stück HTML mit PHP,
Du empfiehlst ernsthaft PHP laufen zu lassen um alle paar Wochen mal eine Datei anzulegen?

Hier das ganze, als bash script

Code: Alles auswählen

#!/bin/dash

echo "Content-type: text/plain; charset=iso-8859-1"
echo
echo "Server startet..."
touch /var/www/html/restart.txt
rot: Moderator wanne spricht, default: User wanne spricht.

uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

Re: XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von uname » 29.06.2016 13:36:09

Du empfiehlst ernsthaft PHP laufen zu lassen um alle paar Wochen mal eine Datei anzulegen?
Soll doch webbasiert sein. Alternativ können wir natürlich wieder ganz oben im Thread anfangen.

Zu den Benutzerrechten. Wem gehört den /var/www/html? Poste Auszüge aus "ls -l" usw.

Benutzeravatar
RobbiBlechdose
Beiträge: 20
Registriert: 23.06.2016 20:20:45

Re: XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von RobbiBlechdose » 29.06.2016 16:31:58

"ls -l" sagt:

Code: Alles auswählen

insgesamt 4
drwxrwxr-x 3 root root 4096 Jun 28 18:26 html

DeletedUserReAsG

Re: XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von DeletedUserReAsG » 29.06.2016 17:00:05

Warum gehört das root? Gib‘s dem User, unter dem dein httpd läuft.

Benutzeravatar
RobbiBlechdose
Beiträge: 20
Registriert: 23.06.2016 20:20:45

Re: XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von RobbiBlechdose » 29.06.2016 17:11:09

Tut mir leid, ich bin hier echt neu. Welcher User ist der apache2 Standarduser?

DeletedUserReAsG

Re: XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von DeletedUserReAsG » 29.06.2016 17:23:52

Normalerweise www-data, aber da es sich hier wohl nicht um ein normales Setup, sondern um ein externes XAMPP-Paket handelt, müsstest du entweder selbst nachsehen (mit z.B. ps), in die Doku schauen oder warten, bis jemand, der’s weiß, es hier schreibt.

Benutzeravatar
RobbiBlechdose
Beiträge: 20
Registriert: 23.06.2016 20:20:45

Re: XAMPP Webserver – Wie Bash-Skripts ausführen?

Beitrag von RobbiBlechdose » 29.06.2016 17:27:24

Danke sehr.
XAMPP ist inzwischen auf Hinweise von allen deinstalliert.
ich habe apache2 wie von uname beschrieben installiert.

Antworten