shell Script geht nicht

Status
Für weitere Antworten geschlossen.

Housemann

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

AndiHeitzer

Benutzer
Sehr erfahren
Mitglied seit
30. Jun 2015
Beiträge
3.214
Punkte für Reaktionen
503
Punkte
174
Ja .... :eek:

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
 

Tommi2day

Benutzer
Mitglied seit
24. Aug 2011
Beiträge
1.164
Punkte für Reaktionen
63
Punkte
68

Housemann

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

Tommi2day

Benutzer
Mitglied seit
24. Aug 2011
Beiträge
1.164
Punkte für Reaktionen
63
Punkte
68
-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.
 

Housemann

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

framp

Benutzer
Mitglied seit
19. Feb 2016
Beiträge
903
Punkte für Reaktionen
64
Punkte
54
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 ;)
 

Housemann

Benutzer
Mitglied seit
20. Apr 2013
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
Super, hat geklappt.
Script und Backup per 7z klappen nun.

Vielen Dank euch allen.
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.086
Punkte für Reaktionen
1.067
Punkte
314
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
 

AndiHeitzer

Benutzer
Sehr erfahren
Mitglied seit
30. Jun 2015
Beiträge
3.214
Punkte für Reaktionen
503
Punkte
174
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 :eek:
 
  • Like
Reaktionen: DS111-User

framp

Benutzer
Mitglied seit
19. Feb 2016
Beiträge
903
Punkte für Reaktionen
64
Punkte
54
Andere Alternative ist gleich alles auf der DS per vi zu editieren oder auf einem remoten Linux zu arbeiten :rolleyes: ...
duck und weg :D
 

framp

Benutzer
Mitglied seit
19. Feb 2016
Beiträge
903
Punkte für Reaktionen
64
Punkte
54
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