Init-Skript für Suse 10.0 zum Wake On Lan starten

M

micologe

Hallo

Ich möchte folgenden Befehl mit einem Init-Skript beim booten des Rechners starten.
Leider habe ich fast keine Ahnung von den Init-Skripten in Suse....
Ich hoffe da kann mir jemand hier weiterhelfen....

Also ich möchte das Suse den Befehl:
Code:
ethtool -s eht0 wol g

Das Skript muss ich dann in /etc/init.d/ abspeichern und zu dem Runlevel also rc3.d und rc5.d verknüpfen, oder???
Muss ich sonst noch etwas beachten?


Wie muss es beginnen?
-mit #!/bin/sh ???
-aber nun ist es schon vorbei.....

Oder gibt es eine andere Möglichkeit, einen Befehl direkt mit dem booten auszuführen?

Ciao mfg MIC

PS: Falls jemand schon so ein Skript hat, bin ich ihm nicht böse, wenn er es mir per PM senden würde....:D

Schon mal vielen Dank im vorraus
 
Zum Aufbau von init-Skripten haette http://www.google.de/linux dir sicherlich weiter geholfen und das sollte auch der erste Anlaufpunkt bei solche allgemeinen Fragen sein, denn Antworten darauf wirst du Unmengen finden. However... zuerstmal solltest du dich mit Shell-Scripting beschaeftigen. Ein guter Anfang waeren sicherlich folgende Seiten:

http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html
http://www.tldp.org/LDP/Bash-Beginners-Guide/html/index.html
http://www.tldp.org/LDP/abs/html/

Weiterhin muss ein init-Skript immer die Parameter 'start' und 'stop' verstehen, damit es vom init-System genutzt werden kann. Der Grundaufbau muss also folgender sein:

Code:
#!/bin/bash

echo "Starte blablaservice"

case "$1" in 
start)
       tuediesundjenes
       ;;
stop)
       daszumauschaltenmachen
       ;;
*)
       undhierwirddiehilfeausgegeben
       ;;
esac

exit 0

logischerweise muesste dein Skript dann also so aussehen:

Code:
#!/bin/bash

PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin

echo "Starte blablaservice"

case "$1" in 
start)
       ethtool -s eht0 wol g
       ;;
stop)
       killall ethtool
       ;;
*)
       echo "Usage: `basename $0` {start|stop}" >&2
       exit 42
       ;;
esac

exit 0
Natuerlich ohne Gewaehr. ;)
 
oder man trägt diesen aufruf in die /etc/init.d/boot.local ein :]
 
damager schrieb:
oder man trägt diesen aufruf in die /etc/init.d/boot.local ein :]
Und das macht man dann immer so, bis man selbst nicht mehr weiss, was in der boot.local alles gestartet wird. ;) Ich gebe zu, dass ich das frueher auch so gemacht haette, aber mittlerweile die Loesung ueber ein init-Skript wesentlich sauberer finde, vor allem, weil man z.B. den Service auch mit dem gleichen Skript beenden kann und weil ein Blick in /etc/init.d/ reicht um zu sehen, welche Services zur Verfuegung stehen. Ausserdem laesst sich das ganze so einfach ueber einen Runlevel-Editor deaktivieren ohne dass man nochmal irgendwelche Dateien bearbeiten muss.
 
Danke für die schnelle Antwort...

Naja das mit google.de habe ich ja schon versucht, aber da meine Programmierkenntnisse gleich Null sind, haben mir diese Beispielskripten und wie sie aufgebaut sind nicht wirklich weitergeholfen....so wie dein erstes Beispiel!

Im 2. hab ich da schon ein wenig mehr durchblick, wie ich es anstellen muss, das es funktioniert. Naja bis auf die Variable PATH=.........., sag jetzt aber bitte nicht, das es Pfad heisst, weil so schlau bin ich auch selbst....:] ;)
Nun zu der Frage, Für was der Pfad, für das Skript, oder den Befehl?

Die andere Möglichkeit hätte ich als nächstes versucht, ich hätte den Befehl abeer zu dem Network Startskript (/etc/init.d/network) ganz am Ende hinzugefügt.
Das wäre doch auch eine Lösung, oder? Aber wahrscheinlich noch unsauberer als die in der /etc/init.d/boot.local.....oder? :think:

Naja ich werde nun mal die Möglichkeit mit Skript 2 versuchen, mal schauen, obs klappt...

Ciao mfg MIC
 
Skript 2 sollte eigentlich funktionieren. Damit du das ganze verstehst, solltest du einfach mal die von mir vorgeschlagenen Tutorials lesen, denn mir fehlt sowohl die Zeit als auch die Lust hier eine Einfuehrung in Shell-Skripting zu geben, vor allem, weil es diese schon zig mal im WWW gibt. Dann wuerdest du auch herausfinden, dass die PATH-Variable die Pfade festlegt, in denen das System nach ausfuehrbaren Dateien sucht. Durch setzen der PATH-Variable im Skript wird also sicher gestellt, dass das Programm auch ohne Angabe eines absoluten Pfades gefunden wird. Solltest du die ausfuehrbare Datei des Programms in einem anderen Ordner als einem der aufgefuehrten Ordner installiert haben, musst du natuerlich dafuer sorgen, dass der Ordner, in dem die Datei 'ethtool' liegt auch im PATH angegeben wird.
Und ja, das rumeditieren in einem so essentiellen Shell-Skript mit deinen fehlenden Kenntnissen waere sicherlich noch unsauberer. Vor allem, weil die /etc/init.d/network mit einem 'exit' abgeschlossen ist, so dass dein Befehl niemals ausgefuehrt worden waere, wenn du ihn ganz ans Ende geschrieben haettest.

Sonst bleibt mir nur dir noch viel Spass beim Lesen der Tutorials zu wuenschen. ;)
 
Also das mit dem Skript 2 funktionier leider auch nicht.....

Nochmal zur Sachlage:
Ich muss den Befehl ausfüren, mit den angegebenen Parametern, um meiner Netzwerkkarte klar zu machen, das sie die Wake On Lan-Funktion aktivieren soll.
Wenn ich per Hand einschalte und dann den Befehl per Hand in der Shel eingebe, also
Code:
ethtool -s eth0 wol g
und mit Enter bestätige, dann bekomme ich mit der Abfrage durch
Code:
ethtool eth0
angezeigt, das Wake on Lan aktiviert ist. Nun wenn ich runterfahre, geht es auch mit
Code:
wol <MAC-ADRESSE
den Rechner aufzuwecken. Aber wenn dann neu Boote nach einem Shutdown, dann funktioniert es eben nicht mehr.....
Daher möchte ich, das Suse diesen Befehl automatisch nach jedem Start ausführt.
Was gibt es da sonst noch für Möglichkeiten, den Befehl automtisch zu starten???
Mit dem Eintrag in die /etc/init.d/boot.local funktioniert es auch nicht....

Ich weis mittlerweile echt nicht mehr, wo ich noch schauen soll, da di Suchergebnisse in Google.de mit <Wake on Lan oder wol, oder.....> auch nicht gerde recht positiv ausfallen.

Kann ich evtl meiner NIC den Parameter beim starten schon zuweisen?

Ich hoffe das weis jemand von euch eine gute Lösung.... :)

Peace mfg MIC
 
Wenn es mit dem init-Skript nicht funktioniert, hast du es wahrscheinlich zu frueh oder zu spaet gestartet. Das kannst du einfach durch Aenderung der Nummer des Links im Default-Runlevel aendern.
 
Zuletzt bearbeitet:
Hier ist eine tolle Lösung....

Hier beschreibt der Autor Lukas Zimmerman, wie das mit dem Wake On Lan ohne ein Init-Skript funktioniert.....:D

PS: ich hasse Init-Skripte!:brav:
 
Na dann loesche mal den Inhalt von /etc/init.d/ und erzaehle mir dann nochmal, dass du init-Skripte hasst. ;)
 
INIT-Skript;INIT-Skript;INIT-Skript;INIT-Skript;INIT-Skript;INIT-Skript;INIT-Skript;I

tja, das mach ich jetzt dann schon mal....:D


Und dann hau ich mir Windows auf die Kiste.:headup:


Und dann... Und dann...X(


Naja, dann akzeptiere ich vielleicht mal ein bis zwei Init-Skripte.....evtl auch drei:devil:

Nee nicht wirklich, bin froh das mein Suse läuft, egal ob mit diesem Init-Skript oder nicht....

Ach ja, da hätte ich noch eine andere Lösung....
Nämlich die hier
Auch eine interessante Methode, da es aber bei mir jetzt funktionier, habe ich mich damit nicht allzuviel beschäftigt und ich kann nicht sagen, ob es klappt damit.

PEACE bis zum nächsten Problem:D


mfg MIC
 

Ähnliche Themen

HD Parameter setzen Suse 10.3, lahmer gehts kaum!

SuSE 10.0 & Option G3 UMTS Karte

[openSuse10.2] SATA mal wieder...

IBM T22, Debian Etch 4, X-server start nach Neuinstall

Zurück
Oben