Перейти до

Как исправить OnConnect или нет подключения всем!


Рекомендованные сообщения

Этот скрипт - переделанный 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

Ссылка на сообщение
Поделиться на других сайтах

Думаю лучше сделать на преле! Там реализовать проще, нужно лиж разбить строку на пременные, а разделеителем сделать пробел например так:

10.203.0.1 Vasya

И при выполнеии скрипта получишь 2 переменные, ip и имя. :)

А вызов прелового скрипта делать из OnConnect

Ссылка на сообщение
Поделиться на других сайтах

Это не ошибка скрипта, скрипт делает все в точности =))

Замени 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`"

Ссылка на сообщение
Поделиться на других сайтах
Этот скрипт - переделанный 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

Есть ошибки и просто описки, как подравишь, выложи плиз обезбаженый вариант, может пригодится кому.

Ссылка на сообщение
Поделиться на других сайтах

Замени "grep $ARG" на "grep ${ARG}\\W" в вышеупомянутых строках.

Я ответил на вопрос, что сделать.

На вопрос "а почему?" я сейчас отвечать не хочу, ищи ответ в man grep и man sh

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...