BOBAH 0 Опубликовано: 2004-12-14 07:42:55 Share Опубликовано: 2004-12-14 07:42:55 Этот скрипт - переделанный OnConnect, он проверяет файл ban_ip_list и если в этом файле есть ip клиента, то этот клиент не может подключиться. В этом скрипте оказалась ошибка, если в файле ban_ip_list буде запись для ip 192.168.5.2 - vasya Когда будет коннектится клиент с ip 192.168.5.23 или 192.168.5.223, то для них не будет исполнен скрипт OnConnect. Вопрос, как сделать так, чтобы проверка на наличие ip в файле была строгой. Четко различались IP адреса. Может скрип OnConnect сделать на Си. Foster может напишешь? Это скрипт OnConnect #!/bin/sh user=$1 ip=$2 cash=$3 CDATA=`date +"%d-%m-%Y %H:%M"` BAN_LIST="/usr/stargazer/ban_ip_list" # file contein ban ip - user LOG_BAN="/usr/stargazer/ban_ip_log" ############################# if [ ! -f "$BAN_LIST" ] ; then echo "File not found : $BAN_LIST" >> $LOG_BAN exit 1; fi for ARG in $ip do while [ ! -z "`cat $BAN_LIST | grep $ARG | cut -d " " -f 1`" ] do GIP="`cat $BAN_LIST | grep $ARG | head -1 | cut -d " " -f 1`" if [ "$GIP" == "$ip" ] ; then echo "${CDATA} IP:$ip > дпуфхр ъблтщф [uSER:${user},CASH:${cash}]" >> $LOG_BAN exit 1; fi done done #################################################### echo "${CDATA} CONNECT [uSER:${user},IP:${ip},CASH:${cash}]" >> /usr/stargazer/users/$user/last_login echo "${CDATA} CONNECT [uSER:${user},IP:${ip},CASH:${cash}]" >> /usr/stargazer/last_login iptables -t filter -A INPUT -s $ip -j ACCEPT iptables -t filter -A FORWARD -s $ip -j ACCEPT iptables -t filter -A FORWARD -d $ip -j ACCEPT iptables -t filter -A OUTPUT -d $ip -j ACCEPT iptables -t nat -A PREROUTING -p tcp -s $ip -d! 192.168.0.0/16 --dport 80 -j REDIRECT --to-port 8080 #################################################### exit 0 Ссылка на сообщение Поделиться на других сайтах
Max 0 Опубліковано: 2004-12-14 09:58:26 Share Опубліковано: 2004-12-14 09:58:26 Думаю лучше сделать на преле! Там реализовать проще, нужно лиж разбить строку на пременные, а разделеителем сделать пробел например так: 10.203.0.1 Vasya И при выполнеии скрипта получишь 2 переменные, ip и имя. А вызов прелового скрипта делать из OnConnect Ссылка на сообщение Поделиться на других сайтах
XoRe 0 Опубліковано: 2004-12-14 10:08:39 Share Опубліковано: 2004-12-14 10:08:39 Это не ошибка скрипта, скрипт делает все в точности =)) Замени grep $ARG на grep ${ARG}\\W в строках while [ ! -z "`cat $BAN_LIST | grep $ARG | cut -d " " -f 1`" ] и GIP="`cat $BAN_LIST | grep $ARG | head -1 | cut -d " " -f 1`" Ссылка на сообщение Поделиться на других сайтах
nn 7 Опубліковано: 2004-12-14 12:26:42 Share Опубліковано: 2004-12-14 12:26:42 Этот скрипт - переделанный OnConnect, он проверяет файл ban_ip_list и если в этом файле есть ip клиента, то этот клиент не может подключиться.В этом скрипте оказалась ошибка, если в файле ban_ip_list буде запись для ip 192.168.5.2 - vasya Когда будет коннектится клиент с ip 192.168.5.23 или 192.168.5.223, то для них не будет исполнен скрипт OnConnect. Вопрос, как сделать так, чтобы проверка на наличие ip в файле была строгой. Четко различались IP адреса. Может скрип OnConnect сделать на Си. Foster может напишешь? Это скрипт OnConnect #!/bin/sh user=$1 ip=$2 cash=$3 CDATA=`date +"%d-%m-%Y %H:%M"` BAN_LIST="/usr/stargazer/ban_ip_list" # file contein ban ip - user LOG_BAN="/usr/stargazer/ban_ip_log" ############################# if [ ! -f "$BAN_LIST" ] ; then echo "File not found : $BAN_LIST" >> $LOG_BAN exit 1; fi for ARG in $ip do while [ ! -z "`cat $BAN_LIST | grep $ARG | cut -d " " -f 1`" ] do GIP="`cat $BAN_LIST | grep $ARG | head -1 | cut -d " " -f 1`" if [ "$GIP" == "$ip" ] ; then echo "${CDATA} IP:$ip > дпуфхр ъблтщф [uSER:${user},CASH:${cash}]" >> $LOG_BAN exit 1; fi done done #################################################### echo "${CDATA} CONNECT [uSER:${user},IP:${ip},CASH:${cash}]" >> /usr/stargazer/users/$user/last_login echo "${CDATA} CONNECT [uSER:${user},IP:${ip},CASH:${cash}]" >> /usr/stargazer/last_login iptables -t filter -A INPUT -s $ip -j ACCEPT iptables -t filter -A FORWARD -s $ip -j ACCEPT iptables -t filter -A FORWARD -d $ip -j ACCEPT iptables -t filter -A OUTPUT -d $ip -j ACCEPT iptables -t nat -A PREROUTING -p tcp -s $ip -d! 192.168.0.0/16 --dport 80 -j REDIRECT --to-port 8080 #################################################### exit 0 Есть ошибки и просто описки, как подравишь, выложи плиз обезбаженый вариант, может пригодится кому. Ссылка на сообщение Поделиться на других сайтах
BOBAH 0 Опубліковано: 2004-12-14 16:12:07 Автор Share Опубліковано: 2004-12-14 16:12:07 ${ARG}\\W - что есть \\W или это не нужно Ссылка на сообщение Поделиться на других сайтах
XoRe 0 Опубліковано: 2004-12-15 00:13:48 Share Опубліковано: 2004-12-15 00:13:48 Замени "grep $ARG" на "grep ${ARG}\\W" в вышеупомянутых строках. Я ответил на вопрос, что сделать. На вопрос "а почему?" я сейчас отвечать не хочу, ищи ответ в man grep и man sh Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас