Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

22.11.2006, 09:04

Crontab fuehrt mein expect Script nicht aus

Hallo,

warum kann Cron nicht mein Expect Script ausführen?

Script Start:

#!/usr/bin/expect

log_file -noappend Erfurt_report
log_user 0
spawn telnet 164.30.140.8 5023
expect "Login:"
send "b43\r"
...

die Logdatei "Erfurt_report" wird erstell in dieser steht aber drin:

couldn't execute "telnet": no such file or directory
while executing
"spawn telnet 164.29.142.9 5023"
(file "/usr/local/nagios/sbin/VCS_Abruf/Erfurt" line 5)^

Wenn ich es per Hand ausführe klappt alles einfandfrei.

Crontabs (Scripte werden unter root ausgeführt):

SHELL=/bin/bash *
PATH=/usr/local/nagios/sbin/VCS_Abruf
MAILTO=""
HOME=/usr/local/nagios/sbin/VCS_Abruf

53 8 * * * /usr/local/nagios/sbin/VCS_Abruf/Start
#51 8 * * * /usr/local/nagios/sbin/VCS_Abruf/filter
#52 8 * * * /usr/local/nagios/sbin/VCS_Abruf/bestand

* liegts eventuell da dran?

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Memphis2k« (22.11.2006, 09:06)


2

22.11.2006, 09:25

...
spawn /usr/bin/telnet 164.30.140.8 5023
...
wie soll ich wissen, was ich denke?
... bevor ich hoere, was ich sage
... bevor ich lese, was ich schreibe

3

22.11.2006, 10:47

Danke epikur,

das selbe Problem hatte ich auch als ich Perl benutzt habe (usr/bin/perl/...)

Gruß

Memphis2k

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

4

22.11.2006, 11:08

@Memphis2k
du solltest dir dringend die man-page der bash/sh durchlesen, denn eine interaktive shell (terminal) wird anders gestartet wie eine nicht-interaktive shell (zb crontab-prozess). schau in die manpages abschnitt INVOCATION

auch der "rest" der man-page ist sehr interessant =D
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

5

22.11.2006, 11:24

Zitat

Original von linuxerr
eine interaktive shell (terminal) wird anders gestartet wie eine nicht-interaktive shell (zb crontab-prozess). schau in die manpages abschnitt INVOCATION


Und genau das ist es was ich nicht verstehe!!! Ich werde mir die Dinge nochmal durchlesen. Weil, Sinn macht es für mich jetzt nicht warum ich aufeinmal für jeden Kram absolute Pfade angeben muss.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Memphis2k« (22.11.2006, 11:25)


linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

6

22.11.2006, 11:45

Zitat

Original von Memphis2k
Und genau das ist es was ich nicht verstehe!!! Ich werde mir die Dinge nochmal durchlesen. Weil, Sinn macht es für mich jetzt nicht warum ich aufeinmal für jeden Kram absolute Pfade angeben muss.

ja, und genau das steht dort drin, warum das so ist. in einer interaktiven shell sind die gegebenheiten einfach andere, was zum beispiel die kanalumlenkungen, suchpfade etc betrifft.
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

bonsai

Prof.Dr. Klugschiss

  • »bonsai« ist männlich

Beiträge: 1 486

Wohnort: N.de

Beruf: Informatiker

  • Nachricht senden

7

22.11.2006, 17:09

...

Zitat

Und genau das ist es was ich nicht verstehe!!! Ich werde mir die Dinge nochmal durchlesen. Weil, Sinn macht es für mich jetzt nicht warum ich aufeinmal für jeden Kram absolute Pfade angeben muss.


Mh...ich finde, da kann man schon ein paar Worte darueber verlieren....

...es gibt zwei Moeglichkeiten den "Fehler" zu beheben:

1. Angabe der absoluten Pfade
diese Variante ziehe ich vor
2. Koennen in der crontab (man crontab) auch Pfade gesetzt werden.
Ansonsten werden die in Deinen profilen (.bashrc, .profile, /etc/profile usw. - Kommt zum Beispiel auf die verwendete Shell an...) gesetzt und zwar als Environment-variable, d.h. diese werden (in eine Richtung - naemlich an child-prozesse) vererbt.

Im Gegensatz zu den Environment-Variablen gibt es noch Shell-variablen, welche bei dem Aufruf einer Subshell NICHT MITVERERBT WERDEN.

Sollte das nicht klar sein, dann probiere einfach mal folgendes:
SHELLVARIABLE=HALLO
export UMGEBUNGSVARIABLE=HALLO
echo $SHELLVARIABLE
echo $UMGEBUNGSVARIABLE
bash
echo $SHELLVARIABLE
echo $UMGEBUNGSVARIABLE

Man-Pages zu lesen schadet trotzdem nicht.

Kind regards,

Bernd
Die erste programmgesteuerte Rechenmaschine (Z1) wurde Mitte der 30er Jahre als "nicht patentwürdig" eingestuft. Warum versaut mir das Ding 50 Jahre später immer noch den Tag?

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

8

22.11.2006, 22:24

Re: ...

ja ok, aber wenn die bash zb als nicht interaktive shell (zb in cron) gestartet wird, dann interessieren die einstellungen in /etc/profile, .bashrc, .profile, etc interessieren überhaupot nicht. das einzige was gelesen wird ist die environment-variable $BASH_ENV (+expansion).
also in scripten möglichst immer komplette pfade benutzen!
damit umgeht man auch das problem, dass sich im suchpfad ja evtl gleichnamige scripte befinden.
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

Thema bewerten