shell Script geht nicht

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

Housemann

Benutzer
Registriert
20. Apr. 2013
Beiträge
25
Reaktionspunkte
0
Punkte
0
Hallo zusammen,

ich habe für die Homeautomatisation IP Symcon in Docker laufen. Für ein Backup von IP Symcon muss der Docker Container gestoppt werden, damit man das Data Verzeichnis Zippen kann.
Dazu habe ich mir nun drei Befehle im Netz und im Forum gesucht mit denen ich das realisieren kann.

--Docker Container stoppen
/usr/local/bin/docker container stop --time=10 IpSymcon
--Backup per 7z
/usr/bin/7z a /volume1/NetBackup/IPSymcon /volume1/docker/ipsymcon/data/*
--Docker Container starten
/usr/local/bin/docker container start IpSymcon

Diese klappen per Putty auch alle bestens.
Wenn ich diese nun jedoch in ein Script packe und dieses mit chmod ausführbar mache, kommt eine Fehlermeldung sobald ich das in Putty mit backup_ips.sh oder sudo backup_ips.sh starten will.
-sh: backup_ips2.sh: command not found

Ich befinde mich im Verzeichnis wo das Script liegt.

Kann mir einer nen Tipp geben?

Vielen Dank
 
Ja .... :o

backup_ips2.sh wird nicht gehen, das ist eine Einstellung im System. Ich hab das vor grauer Zeit mal aufgeschnappt, weiss aber nimmer wo.

Stelle ein ./ voran und dann kannst Dich freuen -> ./backup_ips2.sh
 
Vielen Dank für die Antworten, jedoch klappt es nicht!

Wenn ich es im Verzeichnis "/volume1/homes/admin/service" mit ./backup_ips2.sh ausführe kommt folgender Fehler:
-sh: ./backup_ips2.sh: /bin/sh^M: bad interpreter: No such file or directory

Wenn ich es mit sudo ./backup_ips2.sh ausführe kommt folgendes:
sudo: unable to execute ./backup_ips2.sh: No such file or directory

Hier mal das sh Script
#!/bin/sh
/usr/local/bin/docker container stop --time=10 portainer
/usr/bin/7z a /volume1/NetBackup/IPSymcon /volume1/homes/admin/service/*
/usr/local/bin/docker container start portainer

Wo ist mein Fehler?

Das ist nur mal zum testen ob es generell klappt.
Später werden Container und Pfade noch angepasst.


Gruß
Oli
 
-sh: ./backup_ips2.sh: /bin/sh^M: bad interpreter: No such file or directory
Das Script muss mit Unix Zeilenende abgespeichert werden (z.B. mit Notepad++). Mit dem Dos Format funktioniert das nicht.
 
Ich habe das Script nun nochmal unter Notepad++ gespeichert mit
2019-12-28 21_44_29-Speichern unter.png
2019-12-28 21_49_02-__192.168.11.230_homes_admin_service_backup_ips3.sh - Notepad++.jpg

Jetzt kommt trotzdem noch der Fehler wenn ich sudo ./backup_ips3.sh: mache...
sudo: unable to execute ./backup_ips3.sh: No such file or directory

Wenn ich es ohne Sudo mache...
-sh: ./backup_ips3.sh: /bin/sh^M: bad interpreter: No such file or directory

Ich verstehe es nicht. Ist doch so korrekt wie auf den Bildern, oder?
 
Linux will nur ein LF am Ende der Zeilen. Bei Dir steht aber immer noch ein CR vor jedem LF vom Windows. Das CR musst du ueberall loeschen ;)
 
Super, hat geklappt.
Script und Backup per 7z klappen nun.

Vielen Dank euch allen.
 
Vielelicht noch als Randinfo...

Ich habe Notepad++ so eingerichtet, das er alle Dateien mit der Codepage UTF-8 behandelt, dann klappt das auch mit dem Zeilenende bzw, Zeilenumbruch. Hier mal ein Screenshot...

2019-12-29 Notepad.png

Der Radio-Button bei Zeilenende habe ich bei mir aber weiterhin auf - Windows (CR LF) stehen und macht keine Probleme. Unter Linux bzw. in der Konsole der DS kann man übrigens mit - nano - oder dem mitgeliefertren Editor des Midnight Commander - mcedit - diese Zeichen sichtbar machen, was unter Windows nicht funktioniert.

Tommes
 
Ich arbeite genauso, wie Tommes.

Und zwischendurch kontrolliere ich, ob das Zeilenende noch passt:
2019-12-29 17_15_13-Notepad++.jpg

Liegt die Datei im LINUX-Format vor, dann passt das ohnehin :o
 
  • Like
Reaktionen: DS111-User
Andere Alternative ist gleich alles auf der DS per vi zu editieren oder auf einem remoten Linux zu arbeiten :rolleyes: ...
duck und weg :D
 
Ich weiss jetzt nicht was Du genau unter Workflow verstehst ... aber vermulich einen Developmentcycle.

Auf der DS habe ich bislang nur ein kleines Bootscript angelegt und ansonsten nichts Groesseres. Das habe ich direkt mit dem vi auf der Syno erstellt.

Auf meinen lokalen Linux Servern (Raspberries) mounte ich sonst von meinem Linux Desktop per nfs das remote Directory mit dem Code und arbeite dann remote mit einer lokalen IDE. In einem separaten Window wird dann der Code aufgerufen und debugged. Am Ende wird alles vom remoten nfs Directory zurueckkopiert auf den Desktop und ins lokale git commited. Keine Ahnung ob ich jemals groessere Sachen auf der Syno entwickeln werde - vermutlich nicht. Aber dort wuerde ich es jedenfalls genauso machen.
 
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