ubuntuusers.de

shell script macht Probleme

Status: Gelöst | Ubuntu-Version: Kubuntu 7.10 (Gutsy Gibbon)
Antworten |

notsche

Avatar von notsche

Anmeldungsdatum:
5. Mai 2007

Beiträge: 24

Hallo,
bin Neueinsteiger in der Materie Scripte und benötige Hilfe und auch Vorschläge wie man es besser machen könnte.
Ich gehe wie folgt vor:
Via cron wird zu einer bestimmten Zeit das Script

/root/feuer.sh

mit root-Rechten aufgerufen. Der Inhalt des Script ist

#!/bin/sh
#alte Dateien löschen
rm -f /root/image.iso
#Datum einfuegen
date > /root/feuer.log
#iso bauen aus allen Dateien in /home/harley
mkisofs -l -J -r -jcharset iso8859-1 -o /root/image.iso /home/harley >> feuer.log
#mit cdrecord auf eine cdrw brennen
#dazu zuerst mal cdrw loeschen
cdrecord -blank=fast dev=/dev/cdrw >> feuer.log
#nun brennen
cdrecord driveropts=burnfree speed=8 dev=/dev/cdrw /root/image.iso >> feuer.log
exit


Nun ist es so dass auf der Konsole die Meldung auftaucht dass

#!/bin/sh

ein unbekannter Befehl sei. Das ganze wird von einer 1 (ich nehm mal an dass ist eine Rückmeldung) begleitet.
Kann mir da mal jemand sagen warum da was falsch ist?
Und wie gesagt, ich bin für Verbesserungsvorschläge dankbar. Hintergrund: das ganze läuft auf einer Kiste ohne Display, Maus usw. Gibt es da Möglichkeiten, dass man einen Druck oder eine email (mit feuer.log oder eine message in der Art "hat geklappt/hat nicht geklappt") auf einfache Art und Weise an einen anderen Rechner (Achtung Windows-Maschine) senden kann
Ich danke euch mal im voraus

Norbert

chaklah

Anmeldungsdatum:
25. Januar 2007

Beiträge: 67

Wohnort: Hamburg

1. Versuchs mal mit #!/bin/bash

2.

date > /root/feuer.log 


Damit erstellst du eine neue Datei feuerlog und überschreibst die alte. Sollte wohl besser heissen:

date >> /root/feuer.log 

3. Ich habe so meine Zweifel ob Cron im /root Verzeichnis Schreibrechte hat.

Weiterführend:
http://www-user.tu-chemnitz.de/~hot/unix_linux_werkzeugkasten/bash.html
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html
http://www.tldp.org/LDP/abs/html/index.html

notsche

(Themenstarter)
Avatar von notsche

Anmeldungsdatum:
5. Mai 2007

Beiträge: 24

Hallo,
danke mal für die Antwort.
zu 1) werd ich mal testen
zu 2) ist so Absicht, wollt nur immer die letzten Ausgaben lesen.
zu 3) muss cron Schreibrechte haben? Es wird doch nur ein script abgearbeitet.
werd mich mal mit den Links beschäftigen.


Norbert

chaklah

Anmeldungsdatum:
25. Januar 2007

Beiträge: 67

Wohnort: Hamburg

☹ Wer lesen kann ist echt im Vorteil....

Du hast ja geschrieben das das script mit root Rechten läuft. Wie hast du denn den Benutzer root angelegt? Hat er eine Befehlszeile und wenn ja welche?

notsche

(Themenstarter)
Avatar von notsche

Anmeldungsdatum:
5. Mai 2007

Beiträge: 24

chaklah hat geschrieben:

... den Benutzer root angelegt? Hat er eine Befehlszeile und wenn ja welche?

Der Benutzer root ist nicht von mir angelegt worden. Es sind schon diverse Aufrufe in crontab enthalten. Diese rufen meist anacron auf und dann weiterführend cron.daily, cron.weekly usw. Deshalb ging ich davon aus, dass das klappen sollte. Weisst du was der Code 1 bedeutet, dann hätte ich einen Ansatz wo ich forschen muss. So ist das Feld recht weit 😉

–-
Grüsse
Norbert

chaklah

Anmeldungsdatum:
25. Januar 2007

Beiträge: 67

Wohnort: Hamburg

notsche hat geschrieben:

... Diese rufen meist anacron auf und dann weiterführend cron.daily, cron.weekly usw. Deshalb ging ich davon aus, dass das klappen sollte. Weisst du was der Code 1 bedeutet, ...

Das ist wohl nur die Zeilennummer bei der das script abgebrochen wurde.

Was musst du machen damit diese Fehlermeldung kommt?
Wenn /bin/sh nicht vorhanden ist (bzw. gefunden wird), sollte die Fehlermeldung "Bad interpreter.." ausgegeben werden.

Wie hast du das script in /etc/crontab eingetragen. (Wenn überhaupt). cron.daily wäre der bessere Platz dafür.

An dem script an sich kann ich keine Fehler finden.

notsche

(Themenstarter)
Avatar von notsche

Anmeldungsdatum:
5. Mai 2007

Beiträge: 24

Das ist wohl nur die Zeilennummer bei der das script abgebrochen wurde.
Was musst du machen damit diese Fehlermeldung kommt?
Wenn /bin/sh nicht vorhanden ist (bzw. gefunden wird), sollte die Fehlermeldung "Bad interpreter.." ausgegeben werden.
Wie hast du das script in /etc/crontab eingetragen. (Wenn überhaupt). cron.daily wäre der bessere Platz dafür.
An dem script an sich kann ich keine Fehler finden.

Hallo,
danke für deine Kommentare. Ich glaub ich habs gefunden. Es kölnnte sich um ein Problem mit dem Zeichensatz handeln. Ich hab das Script nämlich nicht auf dem Rechner erstellt auf dem es laufen soll.
Zu deinen Kommentaren:
Ein "Bad interpreter" wird nicht ausgegeben. Das Script läuft soweit ab, wobei eben die Meldung mit 1 usw ausgegeben wird (im logfile). Ich hab das einfach abgekupfert so wie einige andere Einträge in crontab drinstanden. Werde den Aufruf in cron.weekly verlegen, da Aufruf ausschliesslich am Freitag erfolgen soll.
Danke mal für die Hilfe. Sollte es wieder Erwarten immer noch Schwierigkeiten geben, dann melde ich mich wieder.
Ich mach den Thread dann mal zu.
–-
Ein frohes neues Jahr
Norbert

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17621

Wohnort: Berlin

notsche hat geschrieben:

Hintergrund: das ganze läuft auf einer Kiste ohne Display, Maus usw. Gibt es da Möglichkeiten, dass man einen Druck oder eine email (mit feuer.log oder eine message in der Art "hat geklappt/hat nicht geklappt") auf einfache Art und Weise an einen anderen Rechner (Achtung Windows-Maschine) senden kann

Da kommen einige Möglichkeiten in Betracht - ich beschränke mich mal auf weniger abweigige und aufwendige:
a) eine Email versenden.
b) Unter Windows gibt es dieses "net send message 'bla fasel' - nur vage aus der Erinnerung zitiert - da geht bestimmt auch was. Dazu muß natürlich in dem Moment der Windowsrechner laufen.
c) Unter Windows gibt es ja auch Scheduler.
Wenn zu einem Zeitpunkt, da der Job erledigt sein sollte - z.B. Samstags - der Windowsrechner mit scp die Logdatei abholt....?
d) Jabber, Skype, etc.
–-
jetzt wirds doch abwegig ☺

Die Logdatei drucken?
Einen Jingle abspielen?
Das CD-Laufwerk öffnen?
Einen Webserver einrichten, der die Logdatei hübsch verHTMLisiert präsentiert.
...

pyro

Avatar von pyro

Anmeldungsdatum:
29. August 2007

Beiträge: 213

hi, es gibt mehrere Fehlerquellen,

1. hasst du das script ausführbar gemacht ??

  • wenn nicht, soll es als root oder user ausgeführt werden.
    als root: chmod 744 script
    als user: chmod 774 script

2. weißt du welche shell der rechner nutzt??
es gibt nen haufen verschiedene shells,
obwohl die "bash" auf den meisten linux systemen standard ist.
(aber nicht auf unix !!)

auf etwas exotischeren Systemen wie, z.B. grml
kann man aber durchaus auch andere shells antreffen,
als sh oder bash.

schreib mal in die kommandozeile : "echo $SHELL" oder "echo $env $SHELL"
dann bekommst du eine angabe darüber welche shell du nutzt.

hier noch ne kleine auflistung, von shells dies so gibt 😉
sh, csh, zsh, bash, dash, ash, ksh, pdksh

Antworten |