Script funktioniert mit cron nicht mehr?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Giskard
Beiträge: 22
Registriert: 15.02.2004 14:04:06
Kontaktdaten:

Script funktioniert mit cron nicht mehr?

Beitrag von Giskard » 07.04.2004 09:56:20

Hallo,

ich habe ein kleines Script geschrieben um die Virus Patterndatei immer auf dem neusten Stand zu halten. Wenn ich es normal in der Shell ausführe klappt es wunderbar. Wenn ich es allerdings mit Cron alle 6 Stunden automatisch starte funktioniert es nicht mehr.
Woran kann das liegen? Was macht Cron anders?
eingetragen hab ichs so:
1 */6 * * * root /etc/hhp/scripts/patternupdate.sh

Danke für Hilfe!

Benutzeravatar
feltel
Webmaster
Beiträge: 10476
Registriert: 20.12.2001 13:08:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Leipzig, Germany
Kontaktdaten:

Beitrag von feltel » 07.04.2004 10:22:54

Fehlender Zeilenumbruch am Ende der crontab-Datei? Siehe auch "man crontab", Sektion BUGS.

fluid
Beiträge: 494
Registriert: 14.11.2003 21:52:49

Beitrag von fluid » 07.04.2004 13:14:48

Oder vielleicht auch relative Pfade im Skript...

Giskard
Beiträge: 22
Registriert: 15.02.2004 14:04:06
Kontaktdaten:

Beitrag von Giskard » 08.04.2004 10:16:22

aha!
jetzt will es den script wenigstens schonmal starten!

aber irgendwie klappt das wohl nicht ich bekomme die Meldung

/bin/sh: /etc/hhp/scripts/patternupdate.sh: cannot execute binary file

Im Script befinden sich ausschließlich relatieve pfade. Das muss aber doch auch so oda nich?

danke für hilfe!

fluid
Beiträge: 494
Registriert: 14.11.2003 21:52:49

Beitrag von fluid » 08.04.2004 10:46:22

Giskard hat geschrieben:

Code: Alles auswählen

/bin/sh: /etc/hhp/scripts/patternupdate.sh: cannot execute binary file
Dies zumindest ist ein konkreter Pfad. Relativ wäre z.B.:

Code: Alles auswählen

../../scripts/patternupdate.sh
das heißt also von dem aktuellen Standpunkt (working directory) abhängig.
Deine konkreten Pfade sind also richtig.
Was jetzt die Fehlermeldung besagt, kann ich auch nicht genau sagen. Ist die patternupdate.sh denn ein Bash-Skript? Er meint ja, es wäre eine Binary-Datei, also ein ausführbares, kompiliertes Programm...

Benutzeravatar
blackm
Moderator und Co-Admin
Beiträge: 5921
Registriert: 02.06.2002 15:03:17
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von blackm » 08.04.2004 11:01:25

Das Script kannst du aber normal aus der Konsole ausfuehren? Hast du es in dem crontab mal mit der bash als Shell versucht...ist so der einzigste Unterschied der mir erstmal auffaellt...

by, Martin
Schöne Grüße

Martin

Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden

Giskard
Beiträge: 22
Registriert: 15.02.2004 14:04:06
Kontaktdaten:

Beitrag von Giskard » 08.04.2004 11:11:36

Das Script is ein bash Script. wenn ich in der Konsole einfach /etc/hhp/scripts/patternupdate.sh eingebe läuft so, wie ich mir das gedacht hatte.

bash als shell? wie genau meinste das jetzt? :?

Benutzeravatar
blackm
Moderator und Co-Admin
Beiträge: 5921
Registriert: 02.06.2002 15:03:17
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von blackm » 08.04.2004 11:20:03

Na in die erste Zeile einfach

Code: Alles auswählen

#! /bin/bash
schreiben.
Schöne Grüße

Martin

Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden

Giskard
Beiträge: 22
Registriert: 15.02.2004 14:04:06
Kontaktdaten:

Beitrag von Giskard » 08.04.2004 11:37:37

in die erste zeile vom Script?
das hab ich doch sowieso, sonst würde es ja nich klappen

Benutzeravatar
blackm
Moderator und Co-Admin
Beiträge: 5921
Registriert: 02.06.2002 15:03:17
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von blackm » 08.04.2004 12:13:44

Hast du da nicht

Code: Alles auswählen

#! /bin/sh
zu stehen? Falls nicht versuch es mal mit folgender Zeile in cron

Code: Alles auswählen

1 */6 * * * root /bin/bash /etc/hhp/scripts/patternupdate.sh
by, Martin
Schöne Grüße

Martin

Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden

Giskard
Beiträge: 22
Registriert: 15.02.2004 14:04:06
Kontaktdaten:

Beitrag von Giskard » 08.04.2004 15:32:14

also im script hatte ich #!/bin/bash stehen. aber auch mit #!/bin/sh geht es nicht :/

wenn ich den eintrag bei cron um /bin/bash/ erweitere kriege ich folgende meldung

/etc/hhp/scripts/patternupdate.sh: /etc/hhp/scripts/patternupdate.sh: cannot execute binary file

Benutzeravatar
GaRdoHq
Beiträge: 83
Registriert: 15.10.2003 00:00:24

Beitrag von GaRdoHq » 08.04.2004 16:27:26

vieleicht hat die Datei durch irgendwelche Kopieraktionen die X flags nicht mehr.
Probier doch mal

Code: Alles auswählen

chmod +x patternupdate.sh
oder poste mal das Skript, wenn es nicht zu lang ist. Vieleicht ist da ein Bock drin(absolute Pfade etc.) .
Zuletzt geändert von GaRdoHq am 08.04.2004 16:36:46, insgesamt 1-mal geändert.
Open your mind, use open source

Giskard
Beiträge: 22
Registriert: 15.02.2004 14:04:06
Kontaktdaten:

Beitrag von Giskard » 08.04.2004 16:35:51

daran liegts leider auch nicht.
die x flags sind da und wenn ich das script normal ausführe funktioniert alles wunderbar

Benutzeravatar
GaRdoHq
Beiträge: 83
Registriert: 15.10.2003 00:00:24

Beitrag von GaRdoHq » 08.04.2004 16:40:56

vileicht wird die Fehlermedung
cannot execute binary file
aus dem sKript geschmissen. Rufst du daraus vieleicht ein binary auf in dem der absolute Pfad nicht past? Wenn du es manuell aufrufst und es funtzt dann könnte das daran ligen das du dich gerade im richtigen Verzeichniss befindest.
Poste doch mal das Skript.
Open your mind, use open source

Giskard
Beiträge: 22
Registriert: 15.02.2004 14:04:06
Kontaktdaten:

Beitrag von Giskard » 08.04.2004 18:01:31

Aus dem Script rufe ich eigentlich keine anderen dateien auf.
Ausserdem habe ich alle Pfade relatiev gehalten.
Momentan kann ich das Script leide rnicht posten, weil ich nu zuhause bin und erst wieder Dinstag in die Firma komme. Dann Poste ich das ding mal.

erstmal Danke für die Hilfe!

Giskard
Beiträge: 22
Registriert: 15.02.2004 14:04:06
Kontaktdaten:

Beitrag von Giskard » 14.04.2004 09:34:49

So, da bin ich wieder!

Mein Script:

Code: Alles auswählen

#!/bin/bash

fehler=""

#Ordner der Patterndateien 
pathp=/share/wprog/trend/PCCSRV/
#Ordner der backup Patterndateien
pathb=/share/wprog/trend/PCCSRV/lpt\$vpn.OLD.BAK/
#Ordner der runtergeladenen Daten
pathd=/share/wprog/trend/PCCSRV/tmp/
mkdir -p /share/wprog/trend/PCCSRV/tmp/
#Datenserver von Trendmicro
dserv=http://217.110.201.54/

#datum=`date +%d.%m.%Y`
datum=`date -R`

#echo -ne "\n\nUpdate das Viren Patternfile\n"

cd ~/tmp/

#Prüfen, der aktuell installierten Patternnummer

aktuell=`ls -l $pathp | grep "lpt\$vpn."`

if [ "$aktuell" = "" ] ; then
  #echo -ne "\nEs ist noch keine Patterndatei installiert\n"
  aktuell="000"
else 
   aktuell="${aktuell:65:3}"
   #echo "Die aktuelle Patternnummer ist $aktuell"  
fi

#Holen, der aktuell verfügbaren Patternnummer

wget -q -O $pathd\OPR.txt $dserv\OPR.txt
rc=$?


if [ "$rc" != "0" ] ; then
  echo -ne "\nFehler!\n"
  fehler="Fehler beim herunterladen der OPR.txt zum Prüfen der aktuell verfügbaren Patternnummer! ($rc)"
fi

if [ "$fehler" = "" ] ; then

  nummer=`cat $pathd\OPR.txt | grep "Pattern: "`
  nummer=${nummer:9:3}

  patternfile="AVEU$nummer.zip"

  rm $pathd\OPR.txt

  #Vergleichen der Patternnummern
  
  if [ "$aktuell" -ge "$nummer" ] ; then
    #echo -ne "\nEs ist keine neue Patterndatei Verfügbar!\n"
    fehler="Fehler: Keine neue Patterndatei auf dem Server vorhanden"
  fi

fi

if [ "$fehler" = "" ] ; then

  #echo -ne "\nPatternfile Nummer $nummer wird Heruntergeladen...\n"
      
  #Herrunterladen des Patternfiles
  wget -q -O $pathd$patternfile $dserv$patternfile
  rc=$?
  if [ "$rc" != "0" ] ; then
    echo "Fehler!"
    fehler="Fehler beim Herunterladen der Patterndatei! ($rc)"
  fi
fi

#Entpacken und verteilen des Patternfiles

if [ "$fehler" = "" ] ; then
  unzip -q -o $pathd$patternfile -d $pathd

  rm $pathd\whatsnew.txt

  #Die alte Patterndatei in den Backupordner kopieren
  mv -f $pathd\lpt\$vpn.$nummer $pathp
  
  #Die neue Patterndatei in den richtigen Ordner kopieren
  mv $pathp\lpt\$vpn.$aktuell $pathb
  
  rm $pathd$patternfile

  #echo -ne "Fertig!\n\n"
fi


#Wenn ein Fehler auftritt(oda eben nicht)


if [ "$fehler" = "" ] ; then
  #Protokolldatei
  echo "$datum root Patternupdate auf V$nummer" >> $pathp\logfile.txt

else
  #Protokolldatei
  echo "$datum root Patternupdate Fehlgeschlagen. $fehler" >> $pathp\logfile.txt

  #Mail an IT
  #echo -ne "\nMail\n $fehler \n\n" | mail -s "betreff" 
  #oda so ähnlich :/
  
fi
Mein Cron Eintrag:

Code: Alles auswählen

*/59  5 * * * root /bin/bash /etc/hhp/scripts/patternupdate.sh
Die Fehlermail von Cron:

Code: Alles auswählen

/etc/hhp/scripts/patternupdate.sh: /etc/hhp/scripts/patternupdate.sh: cannot execute binary file

Würd mich über Antwort freuhen!

Giskard
Beiträge: 22
Registriert: 15.02.2004 14:04:06
Kontaktdaten:

Beitrag von Giskard » 15.04.2004 16:45:11

.. hat keiner ne Idee?

Also es muss ja irgendwie daran liegen, dass cron Patternupdate.sh nicht als Script ausführen will.
Mit dem Script selber kann es doch nix zu tun haben oder??

Antworten