ubuntuusers.de

Skript automatisch starten

Status: Gelöst | Ubuntu-Version: Ubuntu 8.04 (Hardy Heron)
Antworten |

Tzwenn

Avatar von Tzwenn

Anmeldungsdatum:
6. Mai 2009

Beiträge: 138

Wohnort: Mainz

Hallo,

ich habe folgendes Skript firewall.sh

nach

root@rt-102:/etc/network/if-up.d# ls
firewall.sh  mountnfs  ntpdate  openssh-server  openvpn  wpasupplicant
root@rt-102:/etc/network/if-up.d# 

kopiert

das Skript startet wenn ich firewall.sh start –→ also quasi den Startbefehl daran sende, wie kann ich ihm den Befehl beim reboot automatisch zukommen lassen?

Hier das Skript, falls es benötigt werden sollte:

#!/bin/bash
#-----------------------------------------------------------------------------
#
# IPTabels fuer Router-102
#
#-----------------------------------------------------------------------------
case "$1" in

#######################################################
start)
echo "Starte IP-Paketfilter"

# proc Konfiguration

# Aktiviert das ROUTING
echo "1" > /proc/sys/net/ipv4/ip_forward

echo "1" > /proc/sys/net/ipv4/tcp_syncookies
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

# Alte Regeln loeschen
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD

#iptables -F firewall
#iptables -X firewall
#iptables -N firewall
#iptables -A firewall -i lo -j ACCEPT
#iptables -A firewall -m state --state INVALID -j DROP
#iptables -A firewall -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -t nat -F POSTROUTING
iptables -t nat -F PREROUTING
iptables -t nat -F OUTPUT
iptables -F

#* -> fw
iptables -A INPUT -j ACCEPT
iptables -A INPUT -i eth0 -s 192.168.10.0/24 -j ACCEPT
iptables -A INPUT -i eth2 -s 192.168.202.0/24 -j ACCEPT

# LAN-CPN - intern2
#iptables -A firewall -i eth2 -o eth0 -d 192.168.10.0/255.255.255.0 -j ACCEPT

#rest abweisen
#iptables -A firewall -p tcp -j REJECT --reject-with tcp-reset
#iptables -A firewall -j REJECT

#Pakete in Regelwerk geben
#iptables -A INPUT -j firewall
#iptables -A FORWARD -j firewall

# erlaube Ping
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

# erlaube SSH-Verbindungen
iptables -A INPUT -p tcp --dport 22 --tcp-flags ALL SYN -j ACCEPT

# Masquerading aktivieren
iptables -A POSTROUTING -o eth0 -s 192.168.10.0/24 -t nat -j MASQUERADE

# NAT fuer die Clients im LAN
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
;;

############################################
#Beenden der Firewall

stop)
echo "Stoppe IP-Paketfilter"
# Tabelle flushen
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
echo "Deaktiviere IP-Routing"
echo 0 > /proc/sys/net/ipv4/ip_forward

# Default Policies setzen
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
;;

############################################
# Abrufen des IPTables Statuses

status)
echo "Tabelle filter"
iptables -L -vn
echo "Tabelle nat"
iptables -nat -L -vn
echo "Tabelle mangle"
iptables -t mangle -L -vn
;;

#############################################
# Bildschirmausgabe bei Fehlerhafter Eingabe

*)
echo "Fehlerhafter Aufruf"
echo "Syntax: $0 {start|stop|status}"
exit 1
;;

esac

Tja, hoffentlich weiß einer mehr wie ich, wobei ich das nicht bezweifle 😉

Afteroid

Avatar von Afteroid

Anmeldungsdatum:
31. Oktober 2007

Beiträge: 697

Wohnort: Zug (CH)

Hi,

Wieso wirfst du es nicht einfach in den Autostart?

System -> Einstellungen -> Sitzungen

Dort den Pfad zum Befehl eingeben. Das sollte funktionieren.

Gruss

EDIT: Ne bessere Idee, wenn es eine Firewall ist dann startest du es besser für alle benutzer. Wenn du's auf dem oben beschriebenen Weg machst dann ist das nur gerade für den aktuellen benutzer gültig.

Also: 1) öffne einen Texteditor mit root Rechten z.B

sudo gedit

2) erstelle eine .desktop-Datei mit mindestens:

[Desktop Entry]
Type=Application
Name="hier Beliebiger Name ohne Anfürungs/Schlusszeichen, z.B. Firewall "
Exec="hier das auszuführende Kommando ohne Anfürungs/Schlusszeichen"

3) Speichere dieses file in /etc/xdg/autostart unter beliebigem Namen ab. also z.B firewall.desktop Wichtig! die Endung muss .desktop sein

Dann sollte es bei jedem start automatisch starten, egal mit welchem Benutzer du dich anmeldest

Gruss

sda

Anmeldungsdatum:
22. November 2008

Beiträge: Zähle...

Afteroid schrieb:

Hi,

Wieso wirfst du es nicht einfach in den Autostart?

System -> Einstellungen -> Sitzungen

Dort den Pfad zum Befehl eingeben. Das sollte funktionieren.

Gruss

EDIT: Ne bessere Idee, wenn es eine Firewall ist dann startest du es besser für alle benutzer. Wenn du's auf dem oben beschriebenen Weg machst dann ist das nur gerade für den aktuellen benutzer gültig.

Also: 1) öffne einen Texteditor mit root Rechten z.B

sudo gedit

2) erstelle eine .desktop-Datei mit mindestens:

[Desktop Entry]
Type=Application
Name="hier Beliebiger Name ohne Anfürungs/Schlusszeichen, z.B. Firewall "
Exec="hier das auszuführende Kommando ohne Anfürungs/Schlusszeichen"

3) Speichere dieses file in /etc/xdg/autostart unter beliebigem Namen ab. also z.B firewall.desktop Wichtig! die Endung muss .desktop sein

Dann sollte es bei jedem start automatisch starten, egal mit welchem Benutzer du dich anmeldest

Gruss

Währe es nicht einfacher gleich ein init-Script zu schreiben oder z.B. Autostart-Patch oder sowas zu verwenden? Das würde dann gleich beim Hochfahren starten und nicht erst nach dem Anmelden.

Afteroid

Avatar von Afteroid

Anmeldungsdatum:
31. Oktober 2007

Beiträge: 697

Wohnort: Zug (CH)

Währe es nicht einfacher gleich ein init-Script zu schreiben oder z.B. Autostart-Patch oder sowas zu verwenden? Das würde dann gleich beim Hochfahren starten >und nicht erst nach dem Anmelden.

Fettes sorry, da hab ich wieder mal geschrieben ohne vorher richtig zu lesen und geschweige dann nachzudenken 😳. Und danke sda für's draufaufmerksam machen.

Dein Script ist ja schon ein Startscript. Du musst es nur noch in den Bootprozess einbinden.

1) Kopiere das Script Firewall.sh in /etc/init.d/

sudo mv /etc/network/if-up.d#/firewall.sh /etc/init.d/firewall.sh

2) Ändere die Rechte

sudo chmod +x /etc/init.d/firewall.sh

3) Teste, ob es funktioniert

sudo /etc/init.d/firewall.sh start
sudo /etc/init.d/firewall.sh stop

4) Binde das Script in den Bootprozess ein:

sudo update-rc.d firewall.sh defaults

Dann sollte es eigentlich funktionieren!

Noch ein Vorschlag für dein Script. Es wäre von Vorteil wenn du noch einen "restart" beifügen würdest.

So nun entschuldige ich mich für den mist, den ich da geschrieben habe.

Gruss

Antworten |