Fragen Grundlagen: Script per SSH ausführen (Paket stoppen & starten)

Status
Für weitere Antworten geschlossen.

zwantE

Benutzer
Mitglied seit
02. Feb 2012
Beiträge
302
Punkte für Reaktionen
0
Punkte
16
Servus,

ich möchte gerne per SSH ein Script auf der DS ausführen um ein Paket zu stoppen oder zu stoppen, und dabei benötige ich eure Hilfe.
Ich kann mich per SSH verbinden und anmelden und dort Befehle ausführen wie z.B. "poweroff"

ich will nun aber per SSH ein Script ausführen das auf der DS liegt, und da fangen meine Fragen an.

Wie muss das Script für das Beispiel "poweroff" aussehen, welches Format muss es haben, wo muss ich dieses abspeichern um es später auszuführen und wie rufe ich dieses per SSH auf?

Wenn das mit "poweroff" funktioniert, dann möchte ich 2 Scripte haben wovon mir eins ein Paket startet und das andere ein Paket beendet.

freue mich sehr über eure Hilfe meinen Horizont zu erweitern :)
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
29.889
Punkte für Reaktionen
1.172
Punkte
754
Über Shellscripting solltest Du im Netz genug Einführungen finden. Du findest auch im Forum Beispiele. Das Skript muss mit der Zeile
Code:
#!/bin/sh
beginnen. Der Speicherort ist relativ egal, solange die nötigen Rechte vorhanden sind. Das Skript muss ausführbar sein. Mit dem Kommando chmod 755 gefolgt vom Skriptnamen kann man es ausführbar machen.
 

zwantE

Benutzer
Mitglied seit
02. Feb 2012
Beiträge
302
Punkte für Reaktionen
0
Punkte
16
also erstelle ich eine Datei mit dem Inhalt
Rich (BBCode):
#!/bin/showthread.php poweoff
, aber als welches Format / Dateiendung speichere ich die Datei dann?

chmod setzen kenne ich...

und das Script dabb auszuführen, reicht einfach nur der Pfad zur Datei ?
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
29.889
Punkte für Reaktionen
1.172
Punkte
754
Bei Deinem Skript ist etwas durcheinander gekommen. In der ersten Zeile sollte nur #!/bin/sh stehen, sonst nichts. Bei poweroff fehlt das "r".

Dateiendung ist schnurz. Manche verwenden .sh für Shellskripte.
 

zwantE

Benutzer
Mitglied seit
02. Feb 2012
Beiträge
302
Punkte für Reaktionen
0
Punkte
16
Bei Deinem Skript ist etwas durcheinander gekommen.
ja im handybrowser ist das forum scheiße und da schleicht sich sowas schon mal ein! Danke für den Hinweis!

Und wie kann ich nun einen bestimmten Dienst stoppen / starten?
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
29.889
Punkte für Reaktionen
1.172
Punkte
754
Schau Dir einmal /usr/syno/sbin/synoservicectl an.
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.151
Punkte für Reaktionen
1.115
Punkte
314
Auch sehr informativ ist diese Seite: https://www.synology.com/de-de/support/developer#web_developer wobei du dann auf den Reiter "Holen Sie sich Dev SDK" klicken mußt um danach unten in der Liste zum "Web-API-Guide" zu scrollen und rechts dann auf "Erfahren sie mehr" zu klicken. Dort findest du auch Infos zu synoservice...

Tommes
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
29.889
Punkte für Reaktionen
1.172
Punkte
754
Scheint schon etwas älter zu sein, denn wenn ich es richtig sehe, wurde synoservice ab DSM 5 durch synoservicectl abgelöst. In jedem Falle aber eine interessante Quelle. Danke, Tommes!
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.151
Punkte für Reaktionen
1.115
Punkte
314
Scheint schon etwas älter zu sein...

*räusper* ist dem so? Hm, dann muß ich mich langsam wirklich mal wieder auf die Konsole der DS begeben und nicht immer an meinem Pi... ähm... Raspberry Pi rumspielen *g*

Danke jedenfalls für diesen interessanten Hinweis, dil88

Tommes
 

zwantE

Benutzer
Mitglied seit
02. Feb 2012
Beiträge
302
Punkte für Reaktionen
0
Punkte
16
danke, dann kann ich ja mal ne runde lesen!
kann ich mir einfach im root einen Ordner für meine Scripte erstellen oder muss ich da was beachten?
 

stefan_lx

Benutzer
Mitglied seit
09. Okt 2009
Beiträge
2.766
Punkte für Reaktionen
73
Punkte
88
leg den Ordner doch über die Filestation an, dann kannst du deine Skripte auch über den mitgelieferten Texteditor bearbeiten... nur auf den Pfad musst du aufpassen...
Wenn du z.B. das Verzeichnis "skripte" anlegst, dann ist der Pfad über die shell (also ssh) "/volume1/skripte/" auch Groß-/Kleinschreibung ist zu beachten....

Stefan
 

zwantE

Benutzer
Mitglied seit
02. Feb 2012
Beiträge
302
Punkte für Reaktionen
0
Punkte
16
danke, genau deshalb hab ich gefragt!
gute Nacht... ich meld mich falls ich irgendwo nicht weiter komme :)
 

zwantE

Benutzer
Mitglied seit
02. Feb 2012
Beiträge
302
Punkte für Reaktionen
0
Punkte
16
kommt beim chmod setzen per Konsole gar keine Rückmeldung?
Wenn ich die Datei dann danach ausführen möchte, erhalte die Meldung "File not Found"

ausführen wollte ich mit
"/volume1/Scripte/poweroff.sh" und chmod setzen mit
"chmod 755 /volume1/Scripte/poweroff.sh"
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
29.889
Punkte für Reaktionen
1.172
Punkte
754
Wenn die Shell "File not Found" sagt, dann stimmt möglicherweise etwas mit der Schreibweise nicht. Denk daran, dass Groß- und Kleinschreibung von Unix unterschieden wird.
 

zwantE

Benutzer
Mitglied seit
02. Feb 2012
Beiträge
302
Punkte für Reaktionen
0
Punkte
16
also poweroff funktioniert nun, aber beim Paket stoppen und starten hab ich probleme

ich nutze das Kommando:
Rich (BBCode):
/usr/syno/sbin/synoservicectl --stop JDownloader
und erhalte als Antwort
JDownloader failed to stop... error unknow [0x4000 servicectl_status.c:40]

den Packetnamen hab ich aus dem Ordner /var/packages/

Nachtrag:
Rich (BBCode):
/var/packages/JDownloader/scripts/start-stop-status start
und
Rich (BBCode):
/var/packages/JDownloader/scripts/start-stop-status stop
funktionieren, aber im Paketzentrum wird der Status des Pakets nicht aktualisiert ?!
 
Zuletzt bearbeitet:

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
29.889
Punkte für Reaktionen
1.172
Punkte
754
Was sagt denn

/usr/syno/sbin/synoservicectl --list

Taucht da der JDownloader überhaupt auf? Wenn nicht, musst Du das Paket möglicherweise durch seine eigenen Start-/Stop-Skripte steuern.
 

zwantE

Benutzer
Mitglied seit
02. Feb 2012
Beiträge
302
Punkte für Reaktionen
0
Punkte
16
Das kommt dabei raus
/usr/syno/sbin/synoservicectl: unrecognized option '--list'
Copyright (c) 2003-2014 Synology Inc. All rights reserved.

SynoService Control Tool Help (Version 5592)
Usage: synoservicectl
--help Show This Help
--start Start service.
--stop Stop service.
--restart Restart service.
--reload Send HUP signal to service..
--status Query status of service.
--push-arg JobName arg1 arg2 ...
Push arguments to specific job.
--dump-arg JobName
Dump arguments of the given job.
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
29.889
Punkte für Reaktionen
1.172
Punkte
754
Sorry, ich bin da mit meinem alten DSM nicht auf dem aktuellen Stand. Und den Beitrag von goetz, in dem er synoservicectl anspricht, finde ich auch nicht mehr. Was liefert

/usr/syno/sbin/synoservicectl --status JDownloader

bzw.

/usr/syno/sbin/synoservicectl --dump-arg JDownloader
 

zwantE

Benutzer
Mitglied seit
02. Feb 2012
Beiträge
302
Punkte für Reaktionen
0
Punkte
16
/usr/syno/sbin/synoservicectl --status JDownloader
JDownloader failed to get status... error unknow [0x4000 servicectl_status.c:40]
und
Rich (BBCode):
/usr/syno/sbin/synoservicectl --dump-arg JDownloader
ergibt keine Ausgabe
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
29.889
Punkte für Reaktionen
1.172
Punkte
754
Dann arbeitet JDownloader offensichtlich inkompatibel zur Synology-Start-/Stop-Logik und müsste angepasst werden.
 
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