Datein mit .sh-Endung auf DS214se ausführen

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

Julian1192

Benutzer
Registriert
23. Aug. 2014
Beiträge
16
Reaktionspunkte
0
Punkte
0
Hallo zusammen,

kann mir jemand erklären wie ich .sh Datein auf meiner DS214se zum laufen bekomme. Ich bin auf diesem Gebiet absoluter Neuling. In der Wiki habe ich schon geschaut wegen öffnen/ausführen per SSH - entweder hab ichs nicht gelesen oder ich bin zu blöde..

Es geht dabei um das Uptime24-Projekt - eigentlich recht interessant!

Danke schonmal!
 
Finde die Anleitung auch gerade nicht, deshalb kurz zusammengefasst: Du aktivierst im DSM unter "Terminals" oder so den Zugriff per ssh. Dann überspielst Du Deine sh-Datei auf die DS per WinSCP oder loggst Dich per ssh ein und erstellst sie auf der Konsole. Wichtig ist, die Rechte per "chmod 750 <sh-Datei>" (ohne Anführungsstriche) so zu setzen, dass die sh-Datei ausgeführt werden kann. Dann kannst Du die Datei z.B. per "./<sh-Datei>" starten, wenn Du Dich im gleichen Verzeichnis befindest (ansonsten per "/<Pfad>/<sh-Datei>"). Solltest Du die Datei per cron oder Aufgabenplaner ausführen wollen, achte darauf, dass Du bei den Kommandos die Pfade davorsetzt, oder die PATH-Variable setzt oder eine profile-Datei sourct.
 
Finde die Anleitung auch gerade nicht, deshalb kurz zusammengefasst: Du aktivierst im DSM unter "Terminals" oder so den Zugriff per ssh. Dann überspielst Du Deine sh-Datei auf die DS per WinSCP oder loggst Dich per ssh ein und erstellst sie auf der Konsole. Wichtig ist, die Rechte per "chmod 750 <sh-Datei>" (ohne Anführungsstriche) so zu setzen, dass die sh-Datei ausgeführt werden kann. Dann kannst Du die Datei z.B. per "./<sh-Datei>" starten, wenn Du Dich im gleichen Verzeichnis befindest (ansonsten per "/<Pfad>/<sh-Datei>"). Solltest Du die Datei per cron oder Aufgabenplaner ausführen wollen, achte darauf, dass Du bei den Kommandos die Pfade davorsetzt, oder die PATH-Variable setzt oder eine profile-Datei sourct.

Per Zugriff auf die DS mit Putty bekomme ich immer beim "ausführen" not Found heraus.. :-(
 
Ok, dann etwas ausführlicher:

1. Du loggst Dich ein und befindest Dich in /home/<Username> (statt <Username> bitte Deinen Usernamen einsetzen!). Den Pfad kannst Du mit dem Befehl pwd ermitteln.
2. Wenn Du die Rechte wie oben beschrieben korrekt für das Skript gesetzt hast und es auch in /home/<Username> liegt, dann kannst Du es mit ./<sh-Datei> starten (auch hier <sh-Datei> durch den Namen Deines Shell-Skripts ersetzen.

Beispiel:
Du befindest Dich im Verzeichnis /home/blah, Dein Skript heißt blub.sh und hat die Rechte 750 (also -rwxr-x---). Dann kannst Du es per ./blub.sh oder per /home/blah/blub.sh starten.

In der ersten Zeile des Shell-Skripts muss die Zeile "#!/bin/sh" stehen (ohne Anführungsstriche), aber das weißt Du vermutlich.
 
Wenn das File auch in diesem Ordner liegt, brauchst du eigentlich nur das anführende "/" wegzulassen.
 
Rich (BBCode):
chmod 750 filename.sh
oder...
chmod 750 ./filename.sh
oder...
chmod /volume1/homes/<USER>/filename.sh

Du musst in deinem Fall wie es im screenshot zu sehen ist das vorangestellte "/" weglassen.

luddi
 
wenn du in dem aktuellen Verzeichnis bist:

./uptime-client.sh

oder:

sh uptime-client.sh

aus jedem Verzeichnis (wenn es beispielsweise in public liegt):

sh /public/uptime-client.sh
 
Ich habe das Gefühl wir nähern uns dem Ziel.. jetzt taucht nur noch ein Syntax-Fehler im Script an sich auf würde ich sagen?!
http://picload.org/view/cgorlop/fehler1.png.html

Hier der Code des Scripts, nur username und passwort zensiert! :-)
#!/bin/bash

# Set username and password below

USERNAME=IchBinEinBaum
PASSWORD=IchPutzHierNur



## DO NOT TOUCH AFTER THIS LINE ################################################

OS=$(head -n 1 /etc/issue)
UPTIME=$(cat /proc/uptime | cut -d' ' -f1 | cut -d. -f1)

UPLOAD_URL="https://www.uptime24.net/clientupload.php?user=$USERNAME&pw=$PASSWORD&uptime=$UPTIME&os=$OS"
USERAGENT="Uptime24ClientLinux/0.2"

echo -n Sending uptime...
RESULT=`wget -q -O - --user-agent="$USERAGENT" "$UPLOAD_URL"`

RESULT_ARRAY=(${RESULT//|/ })
case ${RESULT_ARRAY[0]} in
200)
echo " OK"
exit 0
;;
401)
echo " authentication failed. Check username and password."
exit 1
;;
505)
echo " invalid client version. Please check the website for an updated client."
exit 1
;;
*)
echo " unknown error. Please contact admin. Thx."
exit 1
;;
esac
 
Du solltest in der ersten Zeile "#!/bin/bash" durch "#!/bin/sh" ersetzen, wie ich in #4 auch schon angesprochen hatte, wenn Du nicht explizit eine bash installiert hast. Dann solltest Du schauen, wie Du das OS ermitteln kannst, da es die Datei /etc/issue offenbar nicht gibt. Vorschlag von mir:
Rich (BBCode):
OS=`uname`
 
@dil88
bash wird er aber brauchen sonst gibt es Aerger mit dem Array :-) Afaik kann nur bash Array
Wobei man für die Rückgabe wohl nicht unbedingt den Array brauchen würde. Die erste Zeile der Serverantwort müsste eigentlich reichen
 
Ah, sorry, habe mir das Skript nicht im Detail angesehen. Danke für den Hinweis!
 
@dil88
bash wird er aber brauchen sonst gibt es Aerger mit dem Array :-) Afaik kann nur bash Array
Wobei man für die Rückgabe wohl nicht unbedingt den Array brauchen würde. Die erste Zeile der Serverantwort müsste eigentlich reichen

Alter, ich versteh nur Bahnhof :-D

Jedenfalls funktioniert die übermittlung der Uptime jetzt wenn ich es in Putty per "sh uptime-client.sh" ausführe!
Danke!

Aber wie bekomme ich eine automatisierung dieses Prozesses hin? Habe unter "Aufgabenplaner" die Datei als Benutzer-definiertes-Skript erstellt, wenn ich aber mit der Aufgabe auf "Ausführen" gehe passiert nüx auf der Uptime-Seite.. :-(
 
Ergänze im Skripte vor der Zeile "## DO NOT TOUCH AFTER THIS LINE" folgende Zeile:

Rich (BBCode):
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin

Das sollte dem Aufgabenplaner-Job helfen.
 
Ergänze im Skripte vor der Zeile "## DO NOT TOUCH AFTER THIS LINE" folgende Zeile:

Rich (BBCode):
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin

Das sollte dem Aufgabenplaner-Job helfen.

Erledigt, gaaaaaanz großes Dankeschön! :-)
 
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