Moin Moin! Ich habe ein kleines Shell-Skript, welches die IP-Adresse meines Routers ermittelt: wget http://name:passwort@192.168.0.1/st_poe.htm IP=`grep -A 1 'I.P. Address' st_poe.htm | tail -1 | cut -f2 -d">" | cut -f1 -d"<"` soweit funtkioniert das ganz auch. D.h. die aktuelle IP steht in der Variablen IP. Jetzt würde ich diese Variable allerdings gerne exportieren. D.h. ich möchte jederzeit auf die Variable IP zugreifen können (also auch von anderen Konsolen). Dazu habe ich folgendes probier: export IP Allerdings sobald ich dann "echo $IP" probiere (also nachdem mein Skript lief) steht in IP nix drin! Habe ich da einen prinzipiellen Verständnisfehler oder was ist falsch? Gruß & Danke Thilo
Hi Thilo, On 7 Feb 2002 at 14:01, Thilo A. Coblenzer wrote:
wget http://name:passwort@192.168.0.1/st_poe.htm IP=`grep -A 1 'I.P. Address' st_poe.htm | tail -1 | cut -f2 -d">" | cut -f1 -d"<"`
soweit funtkioniert das ganz auch. D.h. die aktuelle IP steht in der Variablen IP. Jetzt würde ich diese Variable allerdings gerne exportieren. D.h. ich möchte jederzeit auf die Variable IP zugreifen können (also auch von anderen Konsolen). Dazu habe ich folgendes probier: export IP Allerdings sobald ich dann "echo $IP" probiere (also nachdem mein Skript lief) steht in IP nix drin!
du hast $IP aus dem script heraus exportiert. Das heisst alle Kindprozesse des script's kennen $IP. Leider beendest Du das script dann, und der Elternprozess, Deine shell, hat nichts mitbekommen. Eine einfachste Möglichkeit wäre es, eine Datei mit touch anzulegen, also 'touch $IP'. mit freundlichen Grüßen Jörg Zimmermann -- .xsiteing agentur für netzkommunikation 42117 wuppertal - friedrich-ebert-str. 141b tel: 0202/3097070 - fax: 0202/3097072
Moin, "Jörg Zimmermann" Thursday, February 07, 2002 2:29 PM
On 7 Feb 2002 at 14:01, Thilo A. Coblenzer wrote:
wget http://name:passwort@192.168.0.1/st_poe.htm IP=`grep -A 1 'I.P. Address' st_poe.htm | tail -1 | cut -f2 -d">" | cut -f1 -d"<"`
soweit funtkioniert das ganz auch. D.h. die aktuelle IP steht in der Variablen IP. Jetzt würde ich diese Variable allerdings gerne exportieren. D.h. ich möchte jederzeit auf die Variable IP zugreifen können (also auch von anderen Konsolen). Dazu habe ich folgendes probier: export IP Allerdings sobald ich dann "echo $IP" probiere (also nachdem mein Skript lief) steht in IP nix drin!
du hast $IP aus dem script heraus exportiert. Das heisst alle Kindprozesse des script's kennen $IP. Leider beendest Du das script dann, und der Elternprozess, Deine shell, hat nichts mitbekommen. Eine einfachste Möglichkeit wäre es, eine Datei mit touch anzulegen, also 'touch $IP'.
OK, das sehe ich ein. Bis jetzt hatte ich die IP auch in einer Datei stehen, doch dann dachte ich eine Variable sei "cooler". Kann ich denn irgendwie dafür sorgen, daß das Skript beim Start des ersten Vaterprozess ausgeführt wird? So durch einen Eintrag in die .bashrc oder so? Gruß & Danke für die schnelle Antwort! Thilo
* Thilo A. Coblenzer schrieb am 07.Feb.2002:
OK, das sehe ich ein. Bis jetzt hatte ich die IP auch in einer Datei stehen, doch dann dachte ich eine Variable sei "cooler". Kann ich denn irgendwie dafür sorgen, daß das Skript beim Start des ersten Vaterprozess ausgeführt wird? So durch einen Eintrag in die .bashrc oder so?
Wenn Du das skript normal ausführst, dann ist es wieder ein Kindprozeß. Wenn es sich allerdings um ein bashskript handelt und Du die bash als shell verwendest, dann kanst Du das Skript im gleichen Prozeß ausführen lassen. Einfach: source skript oder noch einfacher: . skript dabei steht skript für den Namen des Skripts. Wenn es nicht im Pfad steht, muß natürlich der volle Pfadname angegeben werden. Aber achte darauf, daß das Skript niemals mit einem exit beendet wird, sondern einfach ausläuft, sonst kanst Du Dich nie mehr einloggen, da es sonst immer wieder beendet wird. Vor allem dürfen in dem Skript keine Konstruktionen wie etwa: if ..... then echo $USAGE exit 2 fi Ist zwar normalerweise üblich, aber in diesem Fall würde falls das if erfolgreich ist, die shell beendet und Du hast wieder die einlogmaske. Bernd -- ACK = ACKnowledge = Zustimmung | NAC = No ACknowledge = keine Zustimmung DAU = Dümmster Anzunehmender User | LOL = Laughing Out Loud = Lautes Lachen IIRC = If I Remember Correctly = Falls ich mich richtig erinnere OT = Off Topic = Am Thema (der Liste) vorbei |Zufallssignatur 11
Moin, From: "Bernd Brodesser" Thursday, February 07, 2002 3:02 PM
* Thilo A. Coblenzer schrieb am 07.Feb.2002:
OK, das sehe ich ein. Bis jetzt hatte ich die IP auch in einer Datei stehen, doch dann dachte ich eine Variable sei "cooler". Kann ich denn irgendwie dafür sorgen, daß das Skript beim Start des ersten Vaterprozess ausgeführt wird? So durch einen Eintrag in die .bashrc oder so?
Wenn Du das skript normal ausführst, dann ist es wieder ein Kindprozeß. Wenn es sich allerdings um ein bashskript handelt und Du die bash als shell verwendest, dann kanst Du das Skript im gleichen Prozeß ausführen lassen. Einfach:
source skript
oder noch einfacher:
. skript
dabei steht skript für den Namen des Skripts. [schnipp] Vielen Dank, daß klappt prima! Ist es jetzt möglich, dieses Skript in die .bashrc einzutragen? Also, was ich meine ist, sobald eine Bash gestartet wird, soll das Skript gestartet werden, und ich bzw. das Bash-Skript soll die Variable IP zur Verfügung haben!
Gruß & vielen Dank Thilo
* Thilo A. Coblenzer schrieb am 07.Feb.2002:
Vielen Dank, daß klappt prima! Ist es jetzt möglich, dieses Skript in die .bashrc einzutragen? Also, was ich meine ist, sobald eine Bash gestartet wird, soll das Skript gestartet werden, und ich bzw. das Bash-Skript soll die Variable IP zur Verfügung haben!
Ja, was ich geschrieben habe bezog sich auf .bashrc. Aber Grundsätzlich ist es der Shell recht egal, ob es vom Terminal bedient wird, oder ob es von skript kommt. Bernd -- Bei Fragen an die Liste erst mal nachschauen, ob es diese Frage nicht schon einmal gegeben hat. Ein Archiv der Liste findest Du auf: http://lists.suse.com/archives/suse-linux |Zufallssignatur 7
Hi alle! Wo finde ich infos zur aktivierung von ext3 auf meinen hds und eine Hilfe bei Problemen? Ich bin der Anleitung von sdb.suse.de gefolgt und bekomme seitdem beim booten einen fsck auf hda3 (/), wegen not cleanly unmounted. ABER: vor reboot: [...] unmount hda3... done [...] Was ist hier los? danke! Daniel
Daniel Geske wrote:
Wo finde ich infos zur aktivierung von ext3 auf meinen hds und eine Hilfe
ext3-FAQ: http://people.spoiled.org/jha/ext3-faq.html
bei Problemen?
Mailingliste: ext3-users@redhat.com (ext3-Entwickler lesen mit...) http://www.redhat.com/mailing-lists/ext3-users/index.html Zum Eintragen auf: https://listman.redhat.com/mailman/listinfo/ext3-users
Ich bin der Anleitung von sdb.suse.de gefolgt und bekomme seitdem beim booten einen fsck auf hda3 (/), wegen not cleanly unmounted.
ABER: vor reboot: [...] unmount hda3... done [...]
Was ist hier los?
Hilft das folgende? http://sdb.suse.de/de/sdb/html/jkoeke_fsck73.html Grüße Rene
Hallo, On Thu, 7 Feb 2002, Daniel Geske wrote:
Hi alle!
Wo finde ich infos zur aktivierung von ext3 auf meinen hds und eine Hilfe bei Problemen?
Ich bin der Anleitung von sdb.suse.de gefolgt und bekomme seitdem beim booten einen fsck auf hda3 (/), wegen not cleanly unmounted.
ABER: vor reboot: [...] unmount hda3... done [...]
Was ist hier los?
... hast Du von ext2 auf ext3 "upgedatet" (tune2fs -j /dev/hda3)? ... und ist dann in /etc/fstab als Filesystem ext3 oder Auto eingetragen? ... weiterhin wichtig: wenn Du /boot in ein ext3-Filesystem umwandelst UNBEDINGT die Anleitung bei SuSE lesen (ext3 in /etc/rc.config eintragen, lilo, mk_initrd ...). Dann sollte es eigentlich funktionieren (macht es zumindest bei mir). Joachim
"Thilo A. Coblenzer" wrote:
Moin Moin! Ich habe ein kleines Shell-Skript, welches die IP-Adresse meines Routers ermittelt:
wget http://name:passwort@192.168.0.1/st_poe.htm IP=`grep -A 1 'I.P. Address' st_poe.htm | tail -1 | cut -f2 -d">" | cut -f1 -d"<"`
soweit funtkioniert das ganz auch. D.h. die aktuelle IP steht in der Variablen IP. Jetzt würde ich diese Variable allerdings gerne exportieren. D.h. ich möchte jederzeit auf die Variable IP zugreifen können (also auch von anderen Konsolen). Dazu habe ich folgendes probier: export IP Allerdings sobald ich dann "echo $IP" probiere (also nachdem mein Skript lief) steht in IP nix drin!
Habe ich da einen prinzipiellen Verständnisfehler oder was ist falsch?
Vielleicht?! du kannst Variablen zur Laufzeit einer Shell definieren und exportieren..., dann haben subshells (von der exportierenden Shell) die Varibale(n) in ihrem environment. wie du es beschreibst, existiert $IP nur zur Laufzeit deines scriptes und verschwindet mit Beendigung des scriptes wieder. Die wol einfachste Variante dürfte wohl sein diese $IP in eine Datei mit bestimmten Namen zu schreiben, damit andere scripte sie von dort auslesen koennen. z.B: echo $IP >ip.dat oder, z.B: echo "IP=${IP}">ip.dat - somit koennten andere scripte diese datie via '. ip.dat' oder 'source ip.dat' sourcen.. Gruß Daniel
Thilo A. Coblenzer wrote:
Moin Moin! Ich habe ein kleines Shell-Skript, welches die IP-Adresse meines Routers ermittelt: [...] soweit funtkioniert das ganz auch. D.h. die aktuelle IP steht in der Variablen IP. Jetzt würde ich diese Variable allerdings gerne exportieren. D.h. ich möchte jederzeit auf die Variable IP zugreifen können (also auch von anderen Konsolen). Dazu habe ich folgendes probier: export IP Allerdings sobald ich dann "echo $IP" probiere (also nachdem mein Skript lief) steht in IP nix drin!
Hallo, ich nehme mal an, du machst den Export in deinem Skript. Wenn du dann danach auf die Variable zugreifen willst, musst du das Skript in deinem aktuellen Shellprozess laufen lassen: "falsch", weil Skript in eigenem Prozess läuft: ./skript echo $IP ==> ist leer "richtig", weil der aktuelle Prozess geändert wird: . ./skript echo $IP ==> dein Wert Das ist das Prinzip von Vater und Sohn: Der Vater-Prozess gibt seine Umgebung an den Sohn-Prozess weiter. Wird beim Sohn-Prozess etwas geändert, bekommt es der Vater nicht mehr mit. matthias
participants (8)
-
B.Brodesser@t-online.de
-
D.Wolpert
-
Daniel Geske
-
Joachim Kieferle
-
Jörg Zimmermann
-
Matthias Lipinski
-
Rene Engelhard
-
Thilo A. Coblenzer