• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Script beim Systemstart automatisch starten [sloved]

Köbi

Newbie
Hallo,
Ich habe folgendes Problem ich will für eine Arbeit in der Schule eine Firewall auf Opensuse(12.2) für IPv6 konfigurieren. Dafür habe ich eine Datei "ip6tables.sh" geschrieben im /etc Verzeichniss.
Mit diesem Inhalt
Code:
FW=/usr/sbin/ip6tables
#hinausgehende DNS Pakete
$FW -t filter -A FORWARD  -p UDP  -s  1234:02::1001 --sport 953 --dport 53 -j ACCEPT
#hineingehende DNS Pakete
$FW -t filter -A FORWARD -p UDP -d 1234:02::1001 --sport 53 --dport 953 -j ACCEPT

#hinausgehende Proxy Pakete
$FW -A FORWARD -p TCP -s 1234:02::1002 --sport 8080 -j ACCEPT
#hereinkommende Proxy Pakete
$FW -A FORWARD -p TCP -d 1234:02::1002 --dport 8080 -j ACCEPT

#hinausgehende Webserver Pakete für http
$FW -A FORWARD -p TCP -s 1234:02::1003 --sport 80 -j ACCEPT
#hineingehende Webserver Pakete für http
$FW -A FORWARD -p TCP -d 1234:02::1003 --dport 80 -j ACCEPT

#hinausgehende Webserver Pakete für https
$FW -A FORWARD -p TCP -s 1234:02::1003 --sport 443 -j ACCEPT
#hineingehende Webserver Pakete für http
$FW -A FORWARD -p TCP -d 1234:02::1003 --dport 443 -j ACCEPT
Dann habe ich im /etc/init.d Verzeichniss ein script geschrieben das die Datei beim Systemstart ausführen sollte doch dies Funktioniert nicht.
Das ist mein script:
Code:
### BEGIN INIT INFO 
# Provides: K_M 
# Required-Start: $network $remote_fs $syslog 
# Required-Stop: 
# Default-Start: 3 5 
# Default-Stop: 
# Description: Fügt Regeln für die Firewall hinzu 
### END INIT INFO

#!/bin/bash
PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin

echo "Starte das Script fuer die Ip6tables"

case "$1" in
start)
  # hier kommen alle Befehle rein, die beim Booten ausgeführt werden sollen
/etc/ip6tables.sh&
  ;;
stop)
  # hier kommen alle Befehle rein, die beim Runterfahren ausgeführt werden sollen
  exit 64
  ;;
*)
  echo "Usage: `basename $0` {start|stop|restart}" >&2
  exit 64
  ;;
esac

exit 0
Das Script und die Datei sind für den Root ausführbar, kann mir jemand helfen das die Datei beim Systemstart im Runlevel 3 und 5 (in den anderen Runlevels kann es auch gestartet werden) gestartet wird.
 

abgdf

Guru
Köbi schrieb:
kann mir jemand helfen das die Datei beim Systemstart im Runlevel 3 und 5 (in den anderen Runlevels kann es auch gestartet werden) gestartet wird.
Der alte Weg ging so:

http://stackoverflow.com/questions/3036/files-and-scripts-that-execute-on-boot

Hast Du noch ein Verzeichnis "/etc/init.d/rc3.d"?

Das muß alles root machen; und wenn's schiefgeht und z.B. versehentlich was gelöscht wird, kann es das System beschädigen. Klar.

Zum neuen System:
http://www.heise.de/open/artikel/Das-Init-System-Systemd-Teil-2-1563461.html
Möglicherweise wird der alte Weg aus Kompatibilitätsgründen immer noch unterstützt. Oder auch nicht.
--------------
Ehrlich gesagt, mir ist das meist zu umständlich. Es gibt bei mir eine Datei "/etc/rc.d/rc" und dort eine Zeile
# For the first logon on a virtual console.
Meist trage ich meine Skripte einfach hinter dieser Zeile ein. Dürfte Runlevel 3 sein, da kommt nämlich noch eine Zeile
Code:
if test "$RUNLEVEL" = "3"; then
Aber das ist schlimmes Hacking. ;)
 

josef-wien

Ultimate Guru
Beide Skripte sind formal nicht korrekt, auch wenn sie vielleicht trotzdem funktionieren sollten.

Wenn SuSEfirewall2 verwendet wird, nützt Dir dieser Weg nichts, dann gehören lokale Erweiterungen nach /etc/sysconfig/scripts/SuSEfirewall2-custom samt deren Aktivierung in /etc/sysconfig/SuSEfirewall2.

Wenn SuSEfirewall2 nicht verwendet wird, muß Dein in /etc/init.d liegendes Skript noch aktiviert werden (und Du brauchst einen vollständigen ip[6]tables-Regelsatz). Ab 12.2 wird standardmäßig systemd verwendet, daher solltest Du statt einem Init-Skript einen systemd-Service definieren.

P. S.
abgdf schrieb:
Es gibt bei mir eine Datei "/etc/rc.d/rc"
Bei systemd wird Dir das nicht mehr helfen.
 
OP
K

Köbi

Newbie
Danke wenn man den Pfad "/etc/sysconfig/scripts/SuSEfirewall2-custom", wo man die Regeln geschrieben hat. In der Datei /etc/sysconfig/SuSEfirewall2 in der Zeile wo FW_CUSTOMRULES=””, steht einträgt funktioniert es.
 
Oben