script nach ip vergabe starten

baud

baud

Routinier
Script nach Ipvergabe starten

HI Leute !

Ich hab zwar eine etwas unsaubere Loesung fuer nen Server bei mir ... der sich erst durch eine Fritz.box ne IP per DHCP holt (wlan) , und dann selbst als DHCP fungiert und per Lan Adressen vergibt. Nicht schoen... aber es ist genau das was ich brauche.

nur muss ich nach dem der Server die IP von der Fritz.box geholt hat, 2 Befehle Ausfuehren.

Code:
/etc/init.d/ipmasq stop
/etc/init.d/ipmasq stop

Das waehre aber schoen wenn das automatisch funktioniert.

Ich habe ein Ubuntu 8.04 System

ja.... nun ist das ein Befehl der Rootrechte erfordert und funktioniert daher nicht mit der standard Autostartfunktion.
Und da ich es weder in der /etc/rc.local noch in dem verzeichniss /etc/init.d zum laufen bekommen habe, wende ich mich nun an euch.

meine Script sah so aus :

#!/bin/bash
sleep 50
/etc/init.d/ipmasq stop
/etc/init.d/ipmasq start

hat leider nicht funktioniert.


Irgendwer ne idee ?

mfg

baud
 
Zuletzt bearbeitet:
Du kannst mit post-up Befehle übergeben, wenn das Interface gestartet wurde. Dazu trägst du in die /etc/network/interfaces nach iface ethx inet dhcp einfach den/die Befehle ein.
Code:
iface eth0 inet dhcp
post-up command1
post-up command2
...
 
hmm....
hat leider nicht funktioniert, da mein ath0 ( wlan interface )
garnicht in der Datei aufgefuehrt ist ( komisch )

da steht nur eth0 ( lan ) und dann halt die infos zu den statischen sachen im lan.

*raezelhaft*


Wlan ist bei mir auf den "Roaming-Modus" eingestellt.
kann das vielleicht etwas damit zu tun haben ?
also das ich das nicht manuell eingerichtet habe ?

mfg
baud
 
Also benutzt du den Network-Manager. Wiki von ubuntuusers sagt dazu:
Damit der Netzwerk-Manager die Netzwerkschnittstellen verwalten kann, müssen diese für die herkömmliche Netzwerkverwaltung deaktiviert sein bzw. so konfiguriert sein, dass sie ihre IP über DHCP beziehen.
[...]
Alternativ kann man die Netzwerkgeräte auch in der /etc/network/interfaces manipulieren [4]. Wie bereits gesagt ist es hier wichtig, dass die über den Network-Manager zu verwaltenden Geräte über DHCP konfiguriert werden, also Einträge wie
Code:
auto eth0
iface eth0 inet dhcp
[...]
Also könntest du ath0 eintragen und schauen, ob es läuft.
 
Zuletzt bearbeitet:
Sofern der NetworkManager verwendet wird, möchtest Du die Suchmaschine Deines geringsten Misstrauens mit den Stichworten

Networkmanager Dispatcher

oder

NetworkmanagerDispatcher

füttern.
 
funktioniert alles nich so recht.....

ich habe eine Datei namens "ipmasq" in den Pfad "/etc/NetworkManager/dispatcher.d"
abgelegt, mit folgendem Inhalt :

Code:
#!/bin/sh
#/etc/NetworkManager/dispatcher.d/ipmasq
ACTION=$2

if [ "$ACTION" = "up" ]; then
/etc/init.d/ipmasq stop
/etc/init.d/ipmasq stop
fi

und sie dann ausfuerbar gemacht

es funktioniert immer noch nicht.
Was mach ich falsch ?

so langsam ueberlege ich ... ob es nicht doch einfacher ist, einfach 50 Sekunden nach dem Start irgendwo die Befehle starten zu lassen.
Ich weis aber leider nicht wie.... weils halt root Befehle sind !
:-(

ich hoffe jemand hat noch nen Tipp


thx
 
ich will doch einfach nur nach dem starten ein Root-script ausfuehren ?

das muss doch irgendwie gehen ... oder ?


mfg

baud
 
Hast du post-up auch probiert? Was mich nur wundert ist, dass die Ausführung über rc.local nicht gehen soll, da die Befehle dort üblicherweise mit root Rechten ausgeführt werden ^^
 
muss ich denn in der rc.local noch was beachten wenn ich das script aufrufe ?

muss da noch nen Befehl oder sowas vor ?


ich habe bis jetzt immer nur den Pfad angegeben.

also das sah dann so aus :
Code:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.


 /home/server/scriptdatei

exit 0
 
Wenn das Skript ausführbar ist, sollte das reichen. Aber eigentlich kannst du die Befehle direkt über die rc.local aufrufen.
Code:
#!/bin/sh -e
#
# rc.local

sleep 50
/etc/init.d/ipmasq stop && sleep 1
/etc/init.d/ipmasq start
echo läuft
exit 0
 
Muss wohl n Tippfehler sein, weil mal steht stop start und dann wieder stop stop...

Genauso verwirrend, wie ACTION=$2 und dann [ $ACTION = up ]. Warum nicht gleich [ $2 = up ] :think:
 
schon klar, dass das nen Tippfehler ist, ich denke mal, dass das ist der Fehler ;)

und zum 2.:
naja es schadet nicht, ist jedoch besser lesbar, wobei das natürlich bei einem Skript dieser Größe keinen Unterschied macht.
 
schon klar, dass das nen Tippfehler ist, ich denke mal, dass das ist der Fehler ;)
Das Skript im Eingangspost ist ja noch richtig und da gings ja schon nicht, von daher denk ich mal, liegt die Ursache woanders.

und zum 2.:
naja es schadet nicht, ist jedoch besser lesbar, wobei das natürlich bei einem Skript dieser Größe keinen Unterschied macht.
Eben drum :)
 
hey leute !

Jo .. das weiter oben war ein Tippfehler ...
ich schreibe von einem anderen Rechner.


joa.. und seit dem ich das in der rc.local hab gehts auch :

Code:
#!/bin/sh -e
#
# rc.local

sleep 50
/etc/init.d/ipmasq stop && sleep 1
/etc/init.d/ipmasq start
echo läuft
exit 0


troz dessen, das mein script vorher alle Rechtet hatte.. und wenn ich es manuell ausgefuehrt habe, ging es auch. Aber nur der Pfad in der rc.local hat scheinbar nicht gereicht.


danke fuer eure Hilfe Leute !
jetzt gehts
 

Ähnliche Themen

Adressvergabe in anderen Subnets

HLDS init script?

Problem mit HLTV Script

Entschlüsselungsskript in den Bootprozess einbinden

kann wpasupplicant mit diesem startup script nicht starten

Zurück
Oben