Datein mit .sh-Endung auf DS214se ausführen

Status
Für weitere Antworten geschlossen.

Julian1192

Benutzer
Mitglied seit
23. Aug 2014
Beiträge
16
Punkte für Reaktionen
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!
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.684
Punkte für Reaktionen
2.086
Punkte
829
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.
 

Julian1192

Benutzer
Mitglied seit
23. Aug 2014
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
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.. :-(
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.684
Punkte für Reaktionen
2.086
Punkte
829
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.
 

Puppetmaster

Benutzer
Sehr erfahren
Mitglied seit
03. Feb 2012
Beiträge
18.991
Punkte für Reaktionen
629
Punkte
484
Wenn das File auch in diesem Ordner liegt, brauchst du eigentlich nur das anführende "/" wegzulassen.
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
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
 

raymond

Benutzer
Mitglied seit
10. Sep 2009
Beiträge
4.704
Punkte für Reaktionen
21
Punkte
118
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
 

Julian1192

Benutzer
Mitglied seit
23. Aug 2014
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
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
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.684
Punkte für Reaktionen
2.086
Punkte
829
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`
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
@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
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.684
Punkte für Reaktionen
2.086
Punkte
829
Ah, sorry, habe mir das Skript nicht im Detail angesehen. Danke für den Hinweis!
 

Julian1192

Benutzer
Mitglied seit
23. Aug 2014
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
@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.. :-(
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.684
Punkte für Reaktionen
2.086
Punkte
829
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.
 

Julian1192

Benutzer
Mitglied seit
23. Aug 2014
Beiträge
16
Punkte für Reaktionen
0
Punkte
0
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