sonnenblen.de - Das unabhängige Sun User Forum

Betriebssysteme => Solaris => Thema gestartet von: socs am 02. Juli 2007, 15:09:50

Titel: script fehler wer kann mir helfen?
Beitrag von: socs am 02. Juli 2007, 15:09:50
Halllo zusammen,

ich will mir ein patchscript erstellen...bekomme aber immer einen Fehler.
Ich möchte einige patche auf mein system updaten...habe aber nicht die lust dazu alle einzeln einzutippen.

Die Patche liegen im Verzeichnis /var/update/patch1.tgz usw.


script
#!bin/bash
for i in *.tgz; do tar xzf $i; rm -f $i; done
esxupdate -n -r file:/var/update/ESX-patch1 update
esxupdate -n -r file:/var/update/ESX-patch2 update
#ende

Das script hat den Namen update und liegt im Verzeichnis /var/update

nach aufruf des script mit ./update  bekomme ich immer den Fehler : bad interpreter: No such file or directory

Waran kann das denn liegen ??




Titel: Re: script fehler wer kann mir helfen?
Beitrag von: signal_15 am 02. Juli 2007, 15:13:31
Hi,

versuch mal das script mit folgendem zu beginnen.
#!/bin/bash
Starting Off With a Sha-Bang
http://tldp.org/LDP/abs/html/sha-bang.html (http://tldp.org/LDP/abs/html/sha-bang.html)

ct,
Titel: Re: script fehler wer kann mir helfen?
Beitrag von: socs am 02. Juli 2007, 15:15:15
oh hab mich verschrieben  habe natürlich im Script #!/bin/bash
Titel: Re: script fehler wer kann mir helfen?
Beitrag von: turrican am 02. Juli 2007, 17:24:24
oh hab mich verschrieben  habe natürlich im Script #!/bin/bash

Bei mir (Solaris 9, SPARC) war die Bash nicht standardmäßig mitinstalliert (musste sie manuell nachinstallieren) und dann war sie in /usr/bin/bash anstatt in /bin/bash

Teste also mal, ob die Bash bei dir wirklich als /bin/bash vorhanden ist...
Titel: Re: script fehler wer kann mir helfen?
Beitrag von: DukeNuke2 am 02. Juli 2007, 18:14:39
oh hab mich verschrieben  habe natürlich im Script #!/bin/bash

Bei mir (Solaris 9, SPARC) war die Bash nicht standardmäßig mitinstalliert (musste sie manuell nachinstallieren) und dann war sie in /usr/bin/bash anstatt in /bin/bash

Teste also mal, ob die Bash bei dir wirklich als /bin/bash vorhanden ist...

root@******[/]#which bash
/usr/bin/bash

Hab das auf einem Solaris 10 Server eingegeben und afair war der Pfad unter 9 auch so.
Titel: Re: script fehler wer kann mir helfen?
Beitrag von: Drusus am 02. Juli 2007, 19:07:55
Moin,

welche Solaris Version benutzt du denn?

Der Fehler sagt eindeutig, dass dein Script bereits beim Start von /bin/bash scheitert (warum ueberhaupt bash statt sh?). Schau mal nach ob es /bin/bash auf deinem System gibt und ob sich die starten laesst. Sollte das der Fall sein, so schau mal nach ob in der ersten Zeile bei dir wirklich nur ein #!/bin/bash steht (nicht das da am Ende noch ein CTRL-M oder aehnliches folgt...).

Selbst wenn du das in den Griff bekommen hast, so wird dein Script trotzdem nicht klappen weil zu "tar xzf" benutzt und Solaris tar keine z Option kennt (die gibt es nur beim GNU tar). Also entweder hier gtar (GNU tar) verwenden oder aus dem "tar xzf" zwei Befehle machen ("gzcat filename.tar.gz | tar xf -").
Als naechstes loescht du einfach die Einagbedateien ohne zu Wissen ob das Auspacken geklappt hat (und wie gerade erwaehnt wird das eh nicht klappen). Besser: den rm Befehl nur ausfuehren, wenn der tar geklappt hat...

#!/bin/sh
for i in *.tgz; do
    gzcat $i | tar xf - && rm -f $i
done
esxupdate -n -r file:/var/update/ESX-patch1 update
esxupdate -n -r file:/var/update/ESX-patch2 update

Tschau,
  Drusus.
Titel: Re: script fehler wer kann mir helfen?
Beitrag von: turrican am 02. Juli 2007, 21:12:25
Hab das auf einem Solaris 10 Server eingegeben und afair war der Pfad unter 9 auch so.

Naja, aber beim Kollegen socs scheint es ja schon beim Aufrufen der Bash zu klemmen, denn schliesslich bekommt er ja den Fehler "bad interpreter: No such file or directory", deswegen wollte ich ihn mal testen lassen, obs bei ihm wirklich ne bash unter /bin gibt.

Stimme aber auch Drusus zu, könnte evtl. auch ein ^M oder so am Zeilenende sein - sind gemein, die Dinger (vor allem, wenn vi & Co. sie nicht anzeigen...)

Gruss,
Alex

Titel: Re: script fehler wer kann mir helfen?
Beitrag von: Sonnenbrand am 03. Juli 2007, 10:47:34

Stimme aber auch Drusus zu, könnte evtl. auch ein ^M oder so am Zeilenende sein - sind gemein, die Dinger (vor allem, wenn vi & Co. sie nicht anzeigen...)

Der vi-Editor zeigt die ^M sehr wohl an.

Andreas
Titel: Re: script fehler wer kann mir helfen?
Beitrag von: signal_15 am 03. Juli 2007, 15:59:21
Hi,

als ich meine erste antwort los lies, wollte ich ebenfalls schon anmerken, dass die bash im /usr/bin verzeichnis liegt. ich habe dann nochmal bei mir auf zwei kisten nachgesehen. einmal sol10 und einmal sol9. und siehe da:
odin~$ which bash
/usr/bin/bash
odin~$ /bin/bash
odin~$ exit
exit
odin~$

das bringt mich zu der frage: wie bekomme ich raus ob /bin/bash nicht ein 'hardlink' ist?

ct,
Titel: Re: script fehler wer kann mir helfen?
Beitrag von: meik am 03. Juli 2007, 18:35:20
das bringt mich zu der frage: wie bekomme ich raus ob /bin/bash nicht ein 'hardlink' ist?

ls zeigt ja an, wieviele Links auf einen Inode existieren (dritte Spalte), mit der Option -i zeigt ls sogar noch die Nummer des Inodes an:

# ls -li /usr/bin/bash
     24896 -r-xr-xr-x   1 root     bin       578964 Mar  2  2002 /usr/bin/bash
# ls -li /bin/bash
     24896 -r-xr-xr-x   1 root     bin       578964 Mar  2  2002 /bin/bash
#

Also haben den gleichen Inode in /bin und /usr/bin, aber angeblich nur einen Verzeichniseintrag, der auf diesen Inode 24896 zeigt.

Na, wer kann diesen scheinbaren Widerspruch erklären? :-)
Titel: Re: script fehler wer kann mir helfen?
Beitrag von: Sonnenbrand am 04. Juli 2007, 09:51:21

Also haben den gleichen Inode in /bin und /usr/bin, aber angeblich nur einen Verzeichniseintrag, der auf diesen Inode 24896 zeigt.

Na, wer kann diesen scheinbaren Widerspruch erklären? :-)



Ich glaube du möchtest im Singleuser mal ein fsck auf deine Platte loslassen.


Andi
Titel: Re: script fehler wer kann mir helfen?
Beitrag von: turrican am 04. Juli 2007, 10:39:21
Der vi-Editor zeigt die ^M sehr wohl an.
Andreas

Kann ich so nicht bestätigen...
Hatte ich (unter Sol9/Sparc) schon öfters, dass ich im vi
:%s/^M//g (wobei ^M == CRTL-V, CTRL-M ist) einmal ohne Fehlermeldung ausführen konnte, also müssten ja ^M Characters da gewesen sein, sehe ich das richtig?

Titel: Re: script fehler wer kann mir helfen?
Beitrag von: Sonnenbrand am 04. Juli 2007, 10:45:16
Dann mach mal folgendes:

echo "huhu" | unis2dos > /tmp/xxx ; vi /tmp/xxx


Hier, Sol9/SPARC, sehe ich dann sehr wohl das ^M im vi Editor.

Geg. spielt das Terminal noch eine Rolle. Ich benutze dtterm unter CDE.


Andi
Titel: Re: script fehler wer kann mir helfen?
Beitrag von: turrican am 04. Juli 2007, 14:37:20
Dann mach mal folgendes:
echo "huhu" | unis2dos > /tmp/xxx ; vi /tmp/xxx
Hier, Sol9/SPARC, sehe ich dann sehr wohl das ^M im vi Editor.
Geg. spielt das Terminal noch eine Rolle. Ich benutze dtterm unter CDE.

Igitt, nen grafischen Desktop auf ner Sun??
Headless rult
(jaja, ich weiss, da kann man dann trotzdem mit xdmcp usw. remote einloggen etc, war auch nur ein Joke  ;))

Ich wollte das mit dem ^M halt nur mal dem Kollegen socs sagen, er war/ist vermutlich um jede Hilfe froh (wär ich zumindest in seiner Situation)...

Gruss,
Alex
Titel: Re: script fehler wer kann mir helfen?
Beitrag von: meik am 04. Juli 2007, 19:55:45

Also haben den gleichen Inode in /bin und /usr/bin, aber angeblich nur einen Verzeichniseintrag, der auf diesen Inode 24896 zeigt.

Na, wer kann diesen scheinbaren Widerspruch erklären? :-)


Ich glaube du möchtest im Singleuser mal ein fsck auf deine Platte loslassen.

Andi

Entweder muss ich meinen Ironiedetektor neu justieren oder du möchtest mal folgenden Befehl absetzen:

ls -l /bin
Das sollte dir klar machen, warum diese scheinbare Unmöglichkeit auf jedem Solaris-System existiert und warum man deswegen keinen fsck machen muss.

:-)
Titel: Re: script fehler wer kann mir helfen?
Beitrag von: Sonnenbrand am 05. Juli 2007, 10:00:20
Treffer, versenkt *g*
Titel: Re: script fehler wer kann mir helfen?
Beitrag von: signal_15 am 05. Juli 2007, 10:47:40
ok, hab ich verstanden. /bin ist ein link auf /usr/bin. warum aber gibt es /sbin und /usr/sbin?

ct,
Titel: Re: script fehler wer kann mir helfen?
Beitrag von: meik am 05. Juli 2007, 22:14:40
ok, hab ich verstanden. /bin ist ein link auf /usr/bin. warum aber gibt es /sbin und /usr/sbin?

Das kommt AFAIK noch aus den Zeiten, wo / und /usr auf getrennten Dateisystemen lagen. Das Root-Dateisystem muss alles enthalten, was zum Booten nötig ist. Die paar Binaries in /sbin, eine minimale Shell, mount und fsck, waren deswegen alle statisch gelinkt. Und gleichzeitig läßt sich durch einen Symlink auch das metaphysische Problem lösen, ob Programme nach /bin oder /usr/bin gehören. :-)