Script Hilfe gesucht!!!

Status
Für weitere Antworten geschlossen.

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
384
Punkte für Reaktionen
10
Punkte
18
Hallo,

ich habe Folgendes Skript dort würde ich nun gerne eine Aufzeichnung mit einbauen also eine .log file damit ich sehe ob alles ok ist etc.
nun habe ich eben das Problem das ich nicht weis wie ich da dran gehen soll denn ich habe es schon versucht es ->PATH.log zu versuchen was aber nicht ging!!
ich hoffe mir kann einer dabei helfen ;)

Hier das Skript

PHP:
#!/bin/bash
SIKFILEPRE=/volume1/01_public/Synology/Backup_Indexer!/
SIKFILENAME=${SIKFILEPRE}Backup_`date +%d.%m.%Y.%H:%m`.tar
if [ $# -lt 1 ]; then
    echo "Fehler: Kein Dateiname eingegeben"
    echo "Benutzung: $0 datei.ext [datei2.ext] [datei.ext]"
    exit 1
else
    echo ${SIKFILENAME} wird erzeugt
    tar -cvf ${SIKFILENAME} "$@"
    if [ $? -eq 0 ]
    then
        echo Dateien erfolgreich gesichert
    else
        echo Fehler bei Datensicherung
        exit 2
    fi
fi

danke schon mal für eure Mühe und ich hoffe das ich hier richtig bin ;)

LG
Kalysto
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Du leitest die Ausgabe 'echo' einfach in eine Datei um.

Rich (BBCode):
echo "Fehler: Kein Dateiname eingegeben" >> Dateipfad/datei.log

Wobei ein einfaches '>' die Datei neu schreibt, und ein doppeltes '>>' die Ausgabe an die bestehende Datei in der letzten Zeile anfügt.

Und im Gutfall kannst du ein 'exit 0' spendieren.
Rich (BBCode):
then 
  echo Dateien erfolgreich gesichert
  exit 0
else

Gruß
luddi
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.694
Punkte für Reaktionen
2.103
Punkte
829
Die Variablen würde ich mit Anführungsstrichen versehen:

Rich (BBCode):
SIKFILEPRE="/volume1/01_public/Synology/Backup_Indexer!/"
SIKFILENAME="${SIKFILEPRE}Backup_`date +%d.%m.%Y.%H:%m`.tar"

Aber vielleicht klappt das auch so. Hinter dem .tar war übrigens ein Leerzeichen ...

Umleiten tust Du per > (oder >>, um an eine evtl. vorhandene Datei anzuhängen). Beispiel:

Rich (BBCode):
tar -cvf ${SIKFILENAME} "$@" > PATH.log
 

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
384
Punkte für Reaktionen
10
Punkte
18
danke an euch beiden ;) @luddi hab das mal angepasst danke
@dil88 das war kein Lesezeichen das kam von dem ` sieht nur so aus.


Rich (BBCode):
#!/bin/bash
# Einfaches Backup-Script
SIKFILEPRE=/volume1/01_public/Synology/Backup_Indexer!/CouchPotato/CouchPotatoDatabase_
SIKFILENAME=${SIKFILEPRE}Backup_`date +%d.%m.%Y.%H:%m`.tar
if [ $# -lt 1 ]; then
    echo "Fehler: Kein Dateiname eingegeben" >>"/volume1/01_public/Protokolle DS/Scripts/CouchPotatoDataBase.log"
    echo "Benutzung: $0 datei.ext [datei2.ext] [datei.ext]" >>"/volume1/01_public/Protokolle DS/Scripts/CouchPotatoDataBase.log"
    exit 1
else
    echo ${SIKFILENAME} wird erzeugt >>"/volume1/01_public/Protokolle DS/Scripts/CouchPotatoDataBase.log"
    tar -cvf ${SIKFILENAME} "$@"
    if [ $? -eq 0 ]
    then
        echo Dateien erfolgreich gesichert >>"/volume1/01_public/Protokolle DS/Scripts/CouchPotatoDataBase.log"
        exit 0
    else
        echo Fehler bei Datensicherung >>"/volume1/01_public/Protokolle DS/Scripts/CouchPotatoDataBase.log"
        exit 2 
    fi
fi

das währe imom meine Antwort

Rich (BBCode):
/volume1/01_public/Synology/Backup_Indexer!/CouchPotato/CouchPotatoDatabase_ wird erzeugt
Dateien erfolgreich gesichert

mir fehlt aber

Rich (BBCode):
echo ${SIKFILENAME} wird erzeugt >>"/volume1/01_public/Protokolle DS/Scripts/CouchPotatoDataBase.log"

wo er demnach auflistet welche er gesichert hat ....

wisst ihr wo da noch mein Fehler ist oder habe ich beim anpassen der echo ein Fehler gemacht mit den PATH das es deswegen nicht geht....
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Setze doch mal den gesamten String in die Anführungszeichen... und diese Klammern '{' '}' benötigst du nicht um den Inhalt des Parameters auszugeben.

Rich (BBCode):
echo "$SIKFILENAME wird erzeugt"

Gruß
luddi
 

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
384
Punkte für Reaktionen
10
Punkte
18
ok danke dir damit hatte es nichts zu tun ich habe den tar >>PATH noch mal abgezweigt nun geht alles danke dir ;)

Rich (BBCode):
/volume1/01_public/Synology/Backup_Indexer!/CouchPotato/CouchPotatoDatabase_Backup_31.12.2014.14:12.tar wird erzeugt
/volume1/01_public/Protokolle DS/CouchPotato/database/
/volume1/01_public/Protokolle DS/CouchPotato/database/_indexes/
/volume1/01_public/Protokolle DS/CouchPotato/database/_indexes/00id.py
/volume1/01_public/Protokolle DS/CouchPotato/database/_indexes/01category.py
/volume1/01_public/Protokolle DS/CouchPotato/database/_indexes/02profile.py
/volume1/01_public/Protokolle DS/CouchPotato/database/_indexes/03media_children.py
/volume1/01_public/Protokolle DS/CouchPotato/database/_indexes/04notification.py
/volume1/01_public/Protokolle DS/CouchPotato/database/_indexes/05release.py
/volume1/01_public/Protokolle DS/CouchPotato/database/_indexes/06quality.py
/volume1/01_public/Protokolle DS/CouchPotato/database/_indexes/07property.py
/volume1/01_public/Protokolle DS/CouchPotato/database/_indexes/08category_media.py
/volume1/01_public/Protokolle DS/CouchPotato/database/_indexes/09media_search_title.py
/volume1/01_public/Protokolle DS/CouchPotato/database/_indexes/10notification_unread.py
/volume1/01_public/Protokolle DS/CouchPotato/database/_indexes/11release_download.py
/volume1/01_public/Protokolle DS/CouchPotato/database/_indexes/12release_identifier.py
/volume1/01_public/Protokolle DS/CouchPotato/database/_indexes/13media_tag.py
/volume1/01_public/Protokolle DS/CouchPotato/database/_indexes/14release_status.py
/volume1/01_public/Protokolle DS/CouchPotato/database/_indexes/15media_startswith.py
/volume1/01_public/Protokolle DS/CouchPotato/database/_indexes/16media.py
/volume1/01_public/Protokolle DS/CouchPotato/database/_indexes/17media_by_type.py
/volume1/01_public/Protokolle DS/CouchPotato/database/_indexes/18media_status.py
/volume1/01_public/Protokolle DS/CouchPotato/database/_indexes/19media_title.py
/volume1/01_public/Protokolle DS/CouchPotato/database/category_buck
/volume1/01_public/Protokolle DS/CouchPotato/database/category_media_buck
/volume1/01_public/Protokolle DS/CouchPotato/database/category_media_stor
/volume1/01_public/Protokolle DS/CouchPotato/database/category_stor
/volume1/01_public/Protokolle DS/CouchPotato/database/id_buck
/volume1/01_public/Protokolle DS/CouchPotato/database/id_stor
/volume1/01_public/Protokolle DS/CouchPotato/database/media_buck
/volume1/01_public/Protokolle DS/CouchPotato/database/media_by_type_buck
/volume1/01_public/Protokolle DS/CouchPotato/database/media_by_type_stor
/volume1/01_public/Protokolle DS/CouchPotato/database/media_children_buck
/volume1/01_public/Protokolle DS/CouchPotato/database/media_children_stor
/volume1/01_public/Protokolle DS/CouchPotato/database/media_search_title_buck
/volume1/01_public/Protokolle DS/CouchPotato/database/media_search_title_stor
/volume1/01_public/Protokolle DS/CouchPotato/database/media_startswith_buck
/volume1/01_public/Protokolle DS/CouchPotato/database/media_startswith_stor
/volume1/01_public/Protokolle DS/CouchPotato/database/media_status_buck
/volume1/01_public/Protokolle DS/CouchPotato/database/media_status_stor
/volume1/01_public/Protokolle DS/CouchPotato/database/media_stor
/volume1/01_public/Protokolle DS/CouchPotato/database/media_tag_buck
/volume1/01_public/Protokolle DS/CouchPotato/database/media_tag_stor
/volume1/01_public/Protokolle DS/CouchPotato/database/media_title_buck
/volume1/01_public/Protokolle DS/CouchPotato/database/media_title_stor
/volume1/01_public/Protokolle DS/CouchPotato/database/notification_buck
/volume1/01_public/Protokolle DS/CouchPotato/database/notification_stor
/volume1/01_public/Protokolle DS/CouchPotato/database/notification_unread_buck
/volume1/01_public/Protokolle DS/CouchPotato/database/notification_unread_stor
/volume1/01_public/Protokolle DS/CouchPotato/database/profile_buck
/volume1/01_public/Protokolle DS/CouchPotato/database/profile_stor
/volume1/01_public/Protokolle DS/CouchPotato/database/property_buck
/volume1/01_public/Protokolle DS/CouchPotato/database/property_stor
/volume1/01_public/Protokolle DS/CouchPotato/database/quality_buck
/volume1/01_public/Protokolle DS/CouchPotato/database/quality_stor
/volume1/01_public/Protokolle DS/CouchPotato/database/release_buck
/volume1/01_public/Protokolle DS/CouchPotato/database/release_download_buck
/volume1/01_public/Protokolle DS/CouchPotato/database/release_download_stor
/volume1/01_public/Protokolle DS/CouchPotato/database/release_identifier_buck
/volume1/01_public/Protokolle DS/CouchPotato/database/release_identifier_stor
/volume1/01_public/Protokolle DS/CouchPotato/database/release_status_buck
/volume1/01_public/Protokolle DS/CouchPotato/database/release_status_stor
/volume1/01_public/Protokolle DS/CouchPotato/database/release_stor
Dateien erfolgreich gesichert

kann ich hier noch eine Frage zu Cron stellen
das nun nur als bsp.

Rich (BBCode):
#minute hour    mday    month   wday    who     command
@reboot                                                          root    /usr/syno/bin/syno_disk_health_record

währe das so richtig mit dem reboot denn er will das bei mir nicht anerkennen das command is nur ein bsp.
er löscht das immer und die tabs habe ich auch verwendete daran liegt es nicht !
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
[...] er will das bei mir nicht anerkennen das command [...]
[...] er löscht das immer [...]

Was heißt "nicht anerkennen" und "er löscht das immer" ?
Verstehe ich leider nicht...

Gruß
luddi
 

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
384
Punkte für Reaktionen
10
Punkte
18
na eben das ich das eintrage so bsp.

#minute hour mday month wday who command
@reboot tab tab tab tab root /hier der PATH zum Skript

so und wenn ich das abspeichern tue und cron neu starte ist das @reboot wech .... weil es die Variablen nicht mag Anscheins aber ich weis nicht wie ich das anders eintragen sollte

weil ich hatte vor ein Skript oder Programm bei jedem reboot automatisch ausführen zu lassen aber irgend wie.....
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Ok ok... das liegt vermutlich daran dass ich heute nicht ausgeschlafen bin. :D

Aber du kannst es mal auf diesem Weg probieren und das script in der /usr/local/etc/rc.d/ ablegen.

Die Beschreibung ist diesem User Guide "3rd-Party Package Developer Guide" auf Seite 59 zu entnehmen.

Run Scripts When the System Boots
[...] If you would like a script to be executed during the booting or shutting down process, you can put a startup script in /usr/local/etc/rc.d/. Following are the rules for the startup script:
1 It must contain the suffix “.sh”. For example, “myprog.sh”.
2 The permission must be 755.
3 It must contain the options “start” and “stop”. When the system boots up, it will call “myprog.sh start”; when it shuts down, it will call “myprog.sh stop”.
You can refer to the scripts in /usr/syno/etc/rc.d/, which are scripts of Synology’s default services.

Gruß
luddi
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.694
Punkte für Reaktionen
2.103
Punkte
829

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
384
Punkte für Reaktionen
10
Punkte
18
Ok ok... das liegt vermutlich daran dass ich heute nicht ausgeschlafen bin. :D

Aber du kannst es mal auf diesem Weg probieren und das script in der /usr/local/etc/rc.d/ ablegen.

Die Beschreibung ist diesem User Guide "3rd-Party Package Developer Guide" auf Seite 59 zu entnehmen.



Gruß
luddi

kannst du mir ne Seite sagen wie man son start stop script schreibt das müsste nur ein .py Programm starten mehr nicht ......
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
13.803
Punkte für Reaktionen
3.761
Punkte
468
Anstatt die Log-Umlenkung an allen möglichen Stellen innerhalb des Scripts einzubauen, scheint es mir sinnvoller, die Ausgabe des Scripts selbst umzulenken.
Code:
.../backup.sh >>.../backup.log
 

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
384
Punkte für Reaktionen
10
Punkte
18
Anstatt die Log-Umlenkung an allen möglichen Stellen innerhalb des Scripts einzubauen, scheint es mir sinnvoller, die Ausgabe des Scripts selbst umzulenken.
Code:
.../backup.sh >>.../backup.log

hatte ich auch vor gehabt aber das ging leider nicht da kam immer ein Fehler obwohl es einbahnfrei durch lief ich habs nun an allen an gehängt und es geht perfekt ;)
is komisch aber es geht ^^
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
kannst du mir ne Seite sagen wie man son start stop script schreibt das müsste nur ein .py Programm starten mehr nicht ......

Die shell scripte welche unter /usr/local/etc/rc.d/ liegen, werden jeweils beim Boot und beim Shutdown aufgerufen. Beim Boot wird das script mit dem Übergabeparameter "start" und beim Shutdown mit dem Parameter "stop" aufgerufen.

Somit ergibt sich ein einfaches Gerüst für das script:

Rich (BBCode):
#!/bin/sh

case "$1" in

  start)
    # Hier die Aufrufe für die Sequenz Start "system booting"
    # Beispiel
    echo "Sequenz ist: \"booting\""
  ;;
	
  stop)
    # Hier die Aufrufe für die Sequenz Stop "system shutting down"
    # Beispiel
    echo "Sequenz ist: \"shutting down\""
  ;;
	
  *)
    # Für alles andere als "start" oder "stop"
    # Beispiel
    echo "Parameter ungültig!"
  ;;

esac

exit 0

Dieses .sh script speicherst du an dem angegebenen Ort und fügst unter die Sequenz "start" den Befehl zum Aufruf des python (py) scripts ein.

Gruß
luddi
 
Zuletzt bearbeitet:

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
384
Punkte für Reaktionen
10
Punkte
18
ja so eines hatte ich auch dann macht meine DS entweder das die Dienste gerade geladen werden und das Programm läuft aber ich kann mich an der DS nicht einloggen weil die Dienste angeblich geladen werden oder meine DS meldet das sie neu Konfiguriert werden muss
ich lasse es glaube lieber bevor ich sie noch zerschieße ....
denn ich habe eben das ganze auch mit deinem Script gemacht ist es selbe er will Dienste laden und das über 15 min irgend was mag er nicht aber das Programm würde laufen ...

is da nochen Fehler meinerseits ??

LG
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
is da nochen Fehler meinerseits ??
Wie kann ich dir diese Frage beantworten wenn ich nicht exakt weiß was du überhaupt machst?
Vielleicht zeigst du dein script in dem der Aufruf stattfindet. Sind die Berechtigingen des scripts richtig gesetzt wie im manual beschrieben (755)? etc...

Gruß
luddi
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
13.803
Punkte für Reaktionen
3.761
Punkte
468
So ein Start-/Stop-Scripte natürlich nur irgendwelche "Dienste" starten, die die Arbeit dann im Hintergrund erledigen. Wenn das Script die Arbeit selbst erledigt, hemmt das natürlich den Boot-Vorgang. Das Start-/Stop-Script sollte daher nur ein anderes Scripts starten, dass dann im Hintergrund weiterwerkelt. Dafür sorgt ein & hinter dem Befehl.

Beispiel:
Code:
...
  start)
    # Hier die Aufrufe für die Sequenz Start "system booting"
    # Beispiel
    echo "Starte Backup..."
    <path>/backup.sh >> <path>/backup.log&
  ;;
...
Wenn es aber um ein Backup geht, dass nicht beim Start, sondern zyklisch ausgeführt werden soll, ist /etc/crontab eindeutig die bessere Stelle, um das einzubauen.
 

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
384
Punkte für Reaktionen
10
Punkte
18
So ein Start-/Stop-Scripte natürlich nur irgendwelche "Dienste" starten, die die Arbeit dann im Hintergrund erledigen. Wenn das Script die Arbeit selbst erledigt, hemmt das natürlich den Boot-Vorgang. Das Start-/Stop-Script sollte daher nur ein anderes Scripts starten, dass dann im Hintergrund weiterwerkelt. Dafür sorgt ein & hinter dem Befehl.

Beispiel:
Code:
...
  start)
    # Hier die Aufrufe für die Sequenz Start "system booting"
    # Beispiel
    echo "Starte Backup..."
    <path>/backup.sh >> <path>/backup.log&
  ;;
...
Wenn es aber um ein Backup geht, dass nicht beim Start, sondern zyklisch ausgeführt werden soll, ist /etc/crontab eindeutig die bessere Stelle, um das einzubauen.

nein ein Backup ist dies nicht das backup erledige ich wie du sagtest selbst über cron ab da dies dort einfacher ist zyklisch zu arbeiten =)
 

Kalysto

Benutzer
Mitglied seit
30. Dez 2014
Beiträge
384
Punkte für Reaktionen
10
Punkte
18
ja ok mein Fehler ich habe gerade das Script was du mir gegeben hattest meins wahr ähnlich und es einfach abgeändert

Rich (BBCode):
#!/bin/sh

case "$1" in

  start)
    # Hier die Aufrufe für die Sequenz Start "system booting"
    # Beispiel
    sh /volume1/01_public/Synology/Scripts/AutoStartSickRage.sh
    echo "Sequenz ist: \"booting\""
  ;;
	
  stop)
    # Hier die Aufrufe für die Sequenz Stop "system shutting down"
    # Beispiel
    echo "Sequenz ist: \"shutting down\""
    sh /volume1/01_public/Synology/Scripts/AutoStartSickRage.sh  quite
  ;;
	
  *)
    # Für alles andere als "start" oder "stop"
    # Beispiel
    echo "Parameter ungültig!"
  ;;

esac

exit 0
das Script soll mir einfach nur ein anderes starten welches dann meine python Anwendung startet das "boot" Script an sich führt nur ein anderes aus mehr macht es eig. auch nicht ....
aber irgend wo muss ich ja ein Fehler haben denn sonst würde es gehen würde ich behaupten ...

und dieses quite zum beenden von dem Prozess habe ich bei wem anderes gesehen daher dachte ich das dies da rein muss ??

sry das ich mich da so anstelle die Materie is neu für mich .....
danke euch
 
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