.sh script probleme

Status
Für weitere Antworten geschlossen.

allnas

Benutzer
Mitglied seit
16. Dez 2013
Beiträge
22
Punkte für Reaktionen
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
 

Puppetmaster

Benutzer
Sehr erfahren
Mitglied seit
03. Feb 2012
Beiträge
18.991
Punkte für Reaktionen
628
Punkte
484
Hallo!

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

Shebang korrekt?
Vollständige Pfade aller Befehle verwendet?
 

allnas

Benutzer
Mitglied seit
16. Dez 2013
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
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?
 

stefan_lx

Benutzer
Mitglied seit
09. Okt 2009
Beiträge
2.766
Punkte für Reaktionen
74
Punkte
88
du musst in der Eingabebox vom Aufgabenplaner ein sh vor das Skript schreiben:
sh /volume1/share/abfrage.sh

Stefan
 

fpo4711

Benutzer
Mitglied seit
26. Mai 2010
Beiträge
2.772
Punkte für Reaktionen
1
Punkte
0
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
 

Puppetmaster

Benutzer
Sehr erfahren
Mitglied seit
03. Feb 2012
Beiträge
18.991
Punkte für Reaktionen
628
Punkte
484
Oder einen linuxkompatiblen Editor verwenden...

Du siehst, wir sind hier ein bisschen aufs Raten angewiesen. :)
 

allnas

Benutzer
Mitglied seit
16. Dez 2013
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
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
:)
 

Puppetmaster

Benutzer
Sehr erfahren
Mitglied seit
03. Feb 2012
Beiträge
18.991
Punkte für Reaktionen
628
Punkte
484
Notepad++ sollte gehen. Daran wird's also vermutlich schonmal nicht liegen. :)
 

allnas

Benutzer
Mitglied seit
16. Dez 2013
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
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
 

lopo_ch

Benutzer
Mitglied seit
25. Mrz 2013
Beiträge
142
Punkte für Reaktionen
1
Punkte
18
Hi allnas,

Putty ist schon mal gut, es gibt aber auch noch WinSCP: http://winscp.net/eng/docs/lang:de

Der darin enthaltene Editor ist linuxkompatible.

Bei mir funktioniert Dein Script tiptop, IP angepasst.

test.png
 

allnas

Benutzer
Mitglied seit
16. Dez 2013
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
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!
 

lopo_ch

Benutzer
Mitglied seit
25. Mrz 2013
Beiträge
142
Punkte für Reaktionen
1
Punkte
18
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
 

xabano

Benutzer
Mitglied seit
17. Aug 2008
Beiträge
411
Punkte für Reaktionen
0
Punkte
22
./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'.
 

ikkentobi

Benutzer
Mitglied seit
20. Dez 2013
Beiträge
3
Punkte für Reaktionen
0
Punkte
0
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.
 

allnas

Benutzer
Mitglied seit
16. Dez 2013
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
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