Kniffliges Problem im Bezug mit Shell // Html // php

Status
Für weitere Antworten geschlossen.

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
343
Punkte für Reaktionen
8
Punkte
18
gibt es für ein SPK ein tut oder so was das ich mal schauen kann wie das eig. funzt ??

naja die Anforderungen sind einfach ....
ich habe auf ner Html seite einfach nen Button mit Ein und Aus womit eben die shell_exec verbunden sind und diese somit eingeschaltet wird oder ausgeschaltet wird je nachdem mehr ist es eig, nicht....
und das würde über das SPK gehen ??
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.088
Punkte für Reaktionen
1.072
Punkte
314
Es gibt schon einige Infos....

Synologys 3rd-Party Package Developer Guide

How to Create a SPK for Synology DSM to Distribute your LAMP

... welche sich als sehr nützlich erwiesen haben, aber auch ein "altes" SPK von Itari diente uns als Vorlage, welches du dir zum Einstieg ja mal installieren kannst. Auch würde ich es mal auf deinem PC einfach mal entpacken und dir den Inhalt anschauen. Das Paket heißt WebBackup

Schau mal, ob dich das weiter bringt. Und nur so... falls du auf längere Sicht in die Welt der SPK-Erstellung einsteigen willst, dann freunde dich am besten mal mit CGI und Shell-Script an, besser noch Perl... wir sind grade dabei uns auf den Weg zu machen :D

Tommes
 

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
343
Punkte für Reaktionen
8
Punkte
18
das heißt das ist mein "Script" von php welches mir eig. den Mount Befehl startet:

PHP:
<?php
	if($_GET['Movies']) {
		if($_GET['Movies'] == "Ein") {
			shell_exec('/volume1/01_Synology/Scripts/Mount_Umount.sh "mount movie"  >> "/volume1/01_Synology/ProtokolleDS/Scripts/Info_Web_Server/Festplatte_Ein_Movies.log"');
			header("Location: /info-show/php/movie.php?device_width_js=$_GET[device_width_js]&Festplatte_Movie=Ein"); }
		elseif($_GET['Movies'] == "Aus") {
			shell_exec('/volume1/01_Synology/Scripts/Mount_Umount.sh "umount movie" JAM  >> "/volume1/01_Synology/ProtokolleDS/Scripts/Info_Web_Server/Festplatte_Aus_Movies.log"');
			header("Location: /info-show/php/movie.php?device_width_js=$_GET[device_width_js]&Festplatte_Movie=Aus"); }}
	elseif($_GET['Shows']) {
		if($_GET['Shows'] == "Ein") {
			shell_exec('/volume1/01_Synology/Scripts/Mount_Umount.sh "mount show" >> "/volume1/01_Synology/ProtokolleDS/Scripts/Info_Web_Server/Festplatte_Ein_Shows.log"');
			header("Location: /info-show/php/show.php?device_width_js=$_GET[device_width_js]&Festplatte_Shows=Ein"); }
		elseif($_GET['Shows'] == "Aus") {
			shell_exec('/volume1/01_Synology/Scripts/Mount_Umount.sh "umount show" JAS >> "/volume1/01_Synology/ProtokolleDS/Scripts/Info_Web_Server/Festplatte_Aus_Shows.log"');
			header("Location: /info-show/php/show.php?device_width_js=$_GET[device_width_js]&Festplatte_Shows=Aus"); }}
?>

wenn ich das dann als SPK schreiben würde meinst du das das dann gehen würde ??
denn wenn das gehen würde würde ich mir das dann mal anschauen wenn ich so zu meinem ziel kommen würde ;)

naja shell ist kein Problem für mich ;) mit Perl und CGI hatte ich noch nichts zu tun ...
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.088
Punkte für Reaktionen
1.072
Punkte
314
Schau mal in meine Signatur. Dort findest du je einen Link zu unseren Projekten, wobei Ultimate Backup komplett in HTML/CSS/PHP und Shell-Script geschrieben ist, Ultimate Search hingegen auf HTML/CSS/CGI und Shell-Script aufbaut. Bei Ultimate Backup werden u.a. über ein Webformular Daten an ein Shell-Script übergeben, welches dann Backupscripte startet, RSA-Keys erzeugt oder auch Netzwerkverbindungen prüft. Sowas könnte man über den User-Apachen nicht ausführen, über den System-Apachen schon.

Somit sollte auch dein Vorhaben funktionieren, da du hierbei, im Gegensatz zur Webstation, über root-Rechte verfügst. Ich würde dir ja auch gerne weiter helfen, jedoch stecke ich bereits in zwei zeitintensiven und für mich aufwendigen Projekten... und wir lernen ja auch noch.

Vielleicht kennt ja auch noch jemand eine andere Möglichkeit wie du mit deinem Vorhaben ans Ziel kommst. Denn wie gesagt... ich bin auch noch nicht lange auf dem Weg...

Tommes
 

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
343
Punkte für Reaktionen
8
Punkte
18
alles klar dann schaue ich da mal nach Vl. klappt das ja dann was ich vorhabe auch so ;)
muss aber auch ernst noch was anderes fertig machen habe auch wieder viel zu viel vor :D ^^

aber ich danke dir recht herzlich da ich mir ja nun eine Lösung erarbeiten kann ;)

lg
Kalysto
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.088
Punkte für Reaktionen
1.072
Punkte
314
Notfalls... einfach fragen.
 

hvkls

Benutzer
Mitglied seit
23. Dez 2012
Beiträge
463
Punkte für Reaktionen
0
Punkte
22
Du könntest das Script auch "SUID root" starten. Das wäre einfach, jedoch, zumal über den Webserver ausgeführt, ein Sicherheitsrisiko.

Der einmalig, als root, auszuführende Befehl, um das zu aktivieren, wäre

chown root:root /volume1/01_Synology/Scripts/Mount_Umount.sh
chmod 2775 /volume1/01_Synology/Scripts/Mount_Umount.sh
 

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
343
Punkte für Reaktionen
8
Punkte
18
wenn ich das auf das script ausführe:

chown root:root /volume1/01_Synology/Scripts/Mount_Umount.sh
chmod 2775 /volume1/01_Synology/Scripts/Mount_Umount.sh

was ändert das an der Tatsache das der ausführer dennoch nicht root ist sondern http oder wie der Benutzer heißt.

oder habe ich das eben miss verstanden ??
 

hvkls

Benutzer
Mitglied seit
23. Dez 2012
Beiträge
463
Punkte für Reaktionen
0
Punkte
22
Ja, das hast du missverstanden. Es wird dann mit den Rechten von root ausgeführt.
 

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
343
Punkte für Reaktionen
8
Punkte
18
okey das teste ich mal und meld mich dann wieder.

EDIT:

Rich (BBCode):
Sunday 30 October 2016 - 17h:19min:51sec - Freigabe erteilt [ Movie ]!!  ---> Das ist wieder vom Script
Failed to Unmount USB device sdt. ---> Das ist vom System
Error Code: [0x2000 file_get_key_value.c:108] ---> Das ist vom System
Sunday 30 October 2016 - 17h:19min:51sec - Umount USB device sdt succeeded [ MOVIE ]. ---> Das ist wieder vom Script
Sunday 30 October 2016 - 17h:19min:51sec - Festplatte wird ausgeschaltet!! [ Schukosteckdose ]
---> Das ist wieder vom Script

also ging leider doch nicht .... :(
 
Zuletzt bearbeitet:

hvkls

Benutzer
Mitglied seit
23. Dez 2012
Beiträge
463
Punkte für Reaktionen
0
Punkte
22
Aber im Gegensatz zu vorher wird /dev/sdt doch ausgeworfen, wenn auch im zweiten Versuch?
 

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
343
Punkte für Reaktionen
8
Punkte
18
naja nicht wirklich ausgeworfen .... er schaltet sie dann einfach aus da ich dann ne Meldung von DSM bekomme das die Festplatte nicht richtig ausgeworfen wurde .....
ich denke das ich da wirklich nicht um das SPK kommen werde.....
 

hvkls

Benutzer
Mitglied seit
23. Dez 2012
Beiträge
463
Punkte für Reaktionen
0
Punkte
22
Es ist eben Stochern im Nebel ohne den Code. Vielleicht schlägt das erste Unmounting fehl, weil noch Dateien geöffnet sind?
 

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
343
Punkte für Reaktionen
8
Punkte
18
ich kann das komplette hier nicht Posten das es zu lange is ich versuchs mal Per pn

EDIT: pn geht auch nicht ........ kann man hier datein hoch laden ?
 

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
343
Punkte für Reaktionen
8
Punkte
18
Für alle die das Interessieren sollte es gibt eine andere Möglichkeit als es über ein SPK zu gestalten ....
und zwar über Python mit flask

frohes fest allen.

lg
Kalysto
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat