IpfwAddSpammer.sh: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{SEITENTITEL:ipfwAddSpammer.sh}} | {{SEITENTITEL:ipfwAddSpammer.sh}}Das nachfolgende Shell-Skript nimmt eine IP-Adresse als Parameter entgegen und fügt diese IP-Adresse in eine Spammer-Liste ein. Diese Spammerliste ist einerseits eine dynamische ipfw-Tabelle und andererseits eine Datei. | ||
Das nachfolgende Shell-Skript nimmt eine IP-Adresse als Parameter entgegen und fügt diese IP-Adresse in eine Spammer-Liste ein. Diese Spammerliste ist einerseits eine dynamische ipfw-Tabelle und andererseits eine Datei. | |||
Wenn das Shell-Skript ohne Parameter aufgerufen wird, wird die ipfw-Tabelle und dazugehörige Regel gelöscht, neu angelegt, und alle Einträge aus der Datei geladen.<syntaxhighlight lang="shell">#!/bin/sh - | Wenn das Shell-Skript ohne Parameter aufgerufen wird, wird die ipfw-Tabelle und dazugehörige Regel gelöscht, neu angelegt, und alle Einträge aus der Datei geladen.<syntaxhighlight lang="shell">#!/bin/sh - |
Aktuelle Version vom 29. Juni 2025, 22:14 Uhr
Das nachfolgende Shell-Skript nimmt eine IP-Adresse als Parameter entgegen und fügt diese IP-Adresse in eine Spammer-Liste ein. Diese Spammerliste ist einerseits eine dynamische ipfw-Tabelle und andererseits eine Datei.
Wenn das Shell-Skript ohne Parameter aufgerufen wird, wird die ipfw-Tabelle und dazugehörige Regel gelöscht, neu angelegt, und alle Einträge aus der Datei geladen.
#!/bin/sh -
tablename="spammers"
rule=2000
file="/etc/ipfw.table.${tablename}"
ipfw="/sbin/ipfw"
if [ $# -ne 1 ]; then
have_addr=0
else
have_addr=1
addr=$1
fi
if [ $have_addr -eq 0 ]; then
$ipfw delete ${rule} > /dev/null 2>&1
$ipfw table ${tablename} destroy > /dev/null 2>&1
fi
# check if ipfw table exist and create it otherwise
if ! $ipfw table ${tablename} info > /dev/null 2>&1; then
$ipfw table ${tablename} create
$ipfw add ${rule} deny all from 'table('${tablename}')' to any > /dev/null
if [ -e $file ]; then
for entry in `cat $file`; do
$ipfw table ${tablename} add ${entry} > /dev/null
done
fi
fi
if [ $have_addr -eq 0 ]; then
exit 0
fi
if $ipfw table ${tablename} lookup ${addr} > /dev/null 2>&1; then
store=0
else
$ipfw table ${tablename} add ${addr} > /dev/null 2>&1
store=1
fi
if [ $store -eq 1 ]; then
echo $addr >> $file
fi
# vim: ts=4