.sh script probleme

  • 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.

allnas

Benutzer
Registriert
16. Dez. 2013
Beiträge
22
Reaktionspunkte
0
Punkte
0
Hallo zusammen,

ich habe ein Script Shell Script geschrieben, und möchte dies jetzt auf meiner Synology Nas laufen lassen, jedoch funktioniert das nicht!
Ich wollte/möchte es so aufrufen: Dsm -> Systemsteuerung -> Aufgabenplaner -> Erstellen -> Benutzerdefiniertes Shell Script
als Nuter habe ich Root ausgewählt.
Das Script liegt in dem gemeinsamen Ordner Share, so wurde als Pfad: "/volume1/share/abfrage.sh" eingegeben.


Was ist mein Fehler?
Ich bin für jede Antwort dankbar!



------------------------------
DS 214 2x2tb
 
Hallo!

Funktioniert das script, wenn du es auf der Konsole ausführst?

Shebang korrekt?
Vollständige Pfade aller Befehle verwendet?
 
Hi,
vielen Dank für die schnelle Antwort!:)

Es ist zu erwähnen das Shell Scripte ein fölliges Neuland für mich sind!
Aber zum Test hab ich einfach mal in ein Textdokument folgenden Inhalt geschrieben "shutdown -h now" und es dann abfrage.sh genannt!
Benötige ich in dem Script noch andere Parameter?
Was ist eine Shebang?
 
du musst in der Eingabebox vom Aufgabenplaner ein sh vor das Skript schreiben:
sh /volume1/share/abfrage.sh

Stefan
 
Oder aber die Flags für Execute setzen. z.Bsp. mit

Rich (BBCode):
chmod 755 /volume1/share/abfrage.sh

oder aber das komplette Script einfach im Aufgabenplaner eintragen

Gruß Frank
 
Oder einen linuxkompatiblen Editor verwenden...

Du siehst, wir sind hier ein bisschen aufs Raten angewiesen. :)
 
Danke für die Hilfe, werde es heute Mittag ausprobieren!

Oder einen linuxkompatiblen Editor verwenden...
Welche Vorteile hätte ich daraus und welchen Editor würded ihr mir empfehlen?:)
Momentan benutze ich Notepad++.

Simon
:)
 
Notepad++ sollte gehen. Daran wird's also vermutlich schonmal nicht liegen. :)
 
Hi ich habe die Vorschläge alle ausprobiert, es klappt aber immer noch nicht!
Jetzt hab ich es mal mit dem Script probiert, das nachher auf dem NAS laufen soll!
In Bild 1 hab ich die Datei mal über Putty geöffnet in Bild 2 habe ich die Befehle einfach in Putty reinkopiert!

Mein Scrip:
#!/bin/sh
IP=192.168.178.29
ping -c 1 $IP
if [ $? == 0 ]
then
echo Hi
else
echo Hallo
fi;

Das Script mit Putty aufgerufen:
1.PNG

Die Befehle mit Copy and Paste in Putty eingefügt:
Da geht es komischer weise!
2.PNG
 
Hallo lopo_ch,
ich habe auf deinem Bild gesehen, das du das script mit ./pingtest.sh gestartet habe, das klappt bei mir nicht, liegt es vielleicht an meinem Speicherort, ich habe das Script auf einem gemeinsamen Ordner abgelegt! Ich bin als root angemeldet, woran könnte es noch liegen?
Danke für die Hilfe!
 
ich lege Scripte immer in /volume1/scripte ab, aber das ist mehr Geschmackssache.

Ich stocher mal im Trüben: das ipkg-Paket ist installiert und die .profile von root angepasst?
Wenn Du per ssh angemeldet bist, du per cd in das Verzeichnis /volume1/share/ gehst und ls + enter eingibst, sit die
Datei abfrage.sh dann grün oder weiss?
Hast Du chmod 755 /volume1/scripte/abfrage.sh gemacht?

./script.sh ist der gleiche Befehl wie sh script.sh
einfach Gewohnheitssache
 
./script.sh ist der gleiche Befehl wie sh script.sh
einfach Gewohnheitssache

Dis stimmt so nicht wirklich.

  • ./script.sh bedeutet, dass sich das auszufühende Script im aktuellen Ordner befindet (abgekürzte Schreibweise anstatt den vollen Pfad auszuschreiben). Ausserdem muss das Script ausführbar gemacht worden sein (chmod +x script.sh), da es sonst nicht ausgeführt werden kann.

  • script.sh würde dann funktionieren, wenn das Script in einem Order gespeichert ist, der sich in der Pfadvariablen der aktuellen Systemumgebung befindet

  • wenn man sh script.sh benutzt, muss das Script nicht ausführbar gemacht werden (kein chmod +x notwendig). Damit wir die Shell direkt aufgerufen und das Script als Parameter mitgegeben. Da sich sh im Pfad der Systemvariablen befindet braucht es hier keine Pfadangabe sofern man sich im Ordner des Scripts befindet. Anderfalls würde der Befehl so aussehen: 'sh /pfad/zum/Script/script.sh'.
 
Was man vielleicht auch noch berücksichtigen sollte:

Wenn man ein Skript mit "sh skriptname.sh" oder "sh ./skriptname.sh" oder "sh <pfad>/skriptname.sh" startet, muss (wie schon im vorigen Beitrag geschrieben) für die Datei skriptname.sh nie das Execution-Bit gesetzt sein. Das Skript wird dem Shell-Interpreter (/bin/sh) als Argument übergeben und von diesem verarbeitet.

Der Shell-Interpreter ignoriert alle Zeilen, die mit "#" beginnen, auch die erste Zeile, die meistens so "#!/bin/sh" oder so ähnlich aussieht.

Diese erste Zeile ist hingegen wichtig, wenn man das Skript so "skriptname.sh" oder so "./skriptname.sh" oder so "<pfad>/skriptname.sh" startet. Dann wird nämlich durch diese sogenannte Shebang-Zeile bestimmt, welches Programm das Skript verarbeiten soll. Das kann statt /bin/sh auch beispielsweise eine andere Shell, der Perl-Interpreter oder auch ein völlig anderes Programm sein. Die Dateiendung des Skripts (".sh") spielt bei dieser Art des Aufrufs keine Rolle - es wird immer das verwendet, was in der ersten Zeile eingetragen wird.

Es muss natürlich bei dieser Art des Aufrufs (z.B. "<pfad>/skriptname.sh") gewährleistet sein, dass das in der ersten Zeile des Skripts eingetragene Programm (z.B. "/bin/sh") existiert, und dass diese Zeile nicht durch einen Übertragungsfehler von einem Windowssystem aus ein falsches Zeilenende hat.
 
Hi,
mein Script funktioniert jetzt, Danke für meine Hilfe!
Probelmlösung:
Diskstation Resetet
 
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