Warum so unbequem?
Jedes mal ins File rein um nach was bestimmten zu suchen ist doch kacke^^
	Code:
	#!/bin/bash
# IP tables 
IPT=$(which iptables)
IPT6=$(which ip6tables)
# Settings und Einstellungen
log_file="/var/log/nginx/access.log"
such_str=${1:-} #first bash param file.sh param1
count=0
[ -z "$such_str" ] && echo "missing search string" && exit 0;
# in {print $1} steht die Position der IP-Adresse :)
for ip in `cat $log_file | grep "$such_str" | awk '{print $1}' | sed 's/]//g'  | sort -ug` ; do
    ((++count)) # increment
    # IPv6 check
    if [[ ! -z "$IPT6" && "$ip" =~ ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$ ]]; then
        IPT="$IPT6"
    fi
    echo "using $IPT"
    if [ -z $($IPT -L INPUT -v -n | grep '$ip') ]; then
        $IPT -I INPUT -s $ip -j DROP
        $IPT -I OUTPUT -s $ip -j DROP
        echo "$ip hinzugefügt"
    else
        echo "$ip gefunden"
    fi
done
#Abschliessende Statusmitteilung ausgeben
([ "$count" -gt 0 ] && echo "$count Einträge bearbeitet") || echo "keine Einträge"
 call 
	Code:
	./script.sh suchstring
  oder wenn leerzeichen 
	Code:
	./script.sh "wort1 wort2"
 Ein paar Punkte 
- Bei echos ohne Quote kann einiges kaputt gehen
 
- increment in bach geht unter anderem so ((++var))
 
- besser mit [ -z "$var" ] prüfen ob eine var leer ist == ist ein alias für = dem Stringvergleich in Bash, kann also unter bestimmten Voraussetzungen wenn man Zahlen erwartet daneben gehen
 
- mit zb ${1:-"default"} kann man das erster Argument abfragen, wenn nicht gesetzt dann nimm den default wert nach :- ${2:-"default2"} wäre zb für Argument 2
 
IPv6 haste vergessen