The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"bash одна команда выполнить все значения из файла"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"bash одна команда выполнить все значения из файла"  +/
Сообщение от tnega (ok) on 04-Янв-15, 14:26 
Доброго времени суток всем.
Тренируюсь в bashe, хочу сделать свой самописный биллинг, для своего собственного удобства.

Имею текстовую базу данных вида: (файл base)

user1 10.10.0.1 00:00:00:00:00:00
user2 10.10.0.2 11:11:11:11:11:11
user3 10.10.0.3 22:22:22:22:22:22

подскажите пожалуйста, как сделать чтобы команда iptables -I FORWARD 1 -m mac --mac-source $mac -s $ip -j ACCEPT

выполнилась для всех значений из данной базы.

Подключаю (или отключаю подправив кое что) пользователей таким скриптом:

while [ 1 ]
do
echo "Введите абонента:"
read name
ip=`sed /$name/p -n base | cut -d" " -f2`
mac=`sed /$name/p -n base | cut -d" " -f3`
iptables -I FORWARD 1 -m mac --mac-source $mac -s $ip -j ACCEPT
exit
done

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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "bash одна команда выполнить все значения из файла"  +/
Сообщение от ibujhbygblfh on 04-Янв-15, 14:54 
для начала советую осилить ipset bitmap:ip,mac
c ним зело проще работать для авторизации по маку, да и когда пар ип/мак много оно быстрее на порядки

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "bash одна команда выполнить все значения из файла"  +/
Сообщение от tnega (ok) on 04-Янв-15, 18:02 
> для начала советую осилить ipset bitmap:ip,mac
> c ним зело проще работать для авторизации по маку, да и когда
> пар ип/мак много оно быстрее на порядки

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

но погуглив примеры ipset я наткнулся на полезный скрипт, который и был мне нужен:

подстроил его под себя:
file=$(cat base | cut -d" " -f2)
for ip in $file
do
iptables -I FORWARD 1 -s $ip -j ACCEPT
done

попрошу о помощи  - доработать скрипт.

Как вы видите скрипт будет брать второй значение из каждой строки нашей базы данных, а именно - ип адрес.
Мне хотелось бы, чтобы он брал еще и третье значение - макс адрес. шаманю сейчас со скриптом, так скажем методом тыка, пока ничего не получается.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "bash одна команда выполнить все значения из файла"  +/
Сообщение от shadow_alone (ok) on 04-Янв-15, 20:31 
>[оверквотинг удален]
> do
> echo "Введите абонента:"
> read name
> ip=`sed /$name/p -n base | cut -d" " -f2`
> mac=`sed /$name/p -n base | cut -d" " -f3`
> iptables -I FORWARD 1 -m mac --mac-source $mac -s $ip -j ACCEPT
> exit
> done
> Так же хотелось бы сделать так, чтобы закоментированный строки в нашй базе
> данных не выполнялись.

cat base | awk '{print "iptables -I FORWARD 1 -m mac --mac-source " $3 " -s " $2 " -j ACCEPT"}'|sh

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "bash одна команда выполнить все значения из файла"  +/
Сообщение от tnega (ok) on 04-Янв-15, 20:49 
>[оверквотинг удален]
>> read name
>> ip=`sed /$name/p -n base | cut -d" " -f2`
>> mac=`sed /$name/p -n base | cut -d" " -f3`
>> iptables -I FORWARD 1 -m mac --mac-source $mac -s $ip -j ACCEPT
>> exit
>> done
>> Так же хотелось бы сделать так, чтобы закоментированный строки в нашй базе
>> данных не выполнялись.
> cat base | awk '{print "iptables -I FORWARD 1 -m mac --mac-source
> " $3 " -s " $2 " -j ACCEPT"}'|sh

то, что нужно! спасибо большое! очень Вам благодарен! оперативно!

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "bash одна команда выполнить все значения из файла"  +/
Сообщение от shadow_alone (ok) on 04-Янв-15, 22:51 
>>> Так же хотелось бы сделать так, чтобы закоментированный строки в нашй базе
>>> данных не выполнялись.

cat base |grep -v "^#" | awk '{print "iptables -I FORWARD 1 -m mac --mac-source  " $3 " -s " $2 " -j ACCEPT"}'|sh

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "bash одна команда выполнить все значения из файла"  –1 +/
Сообщение от tnega (ok) on 04-Янв-15, 23:55 
>>>> Так же хотелось бы сделать так, чтобы закоментированный строки в нашй базе
>>>> данных не выполнялись.
> cat base |grep -v "^#" | awk '{print "iptables -I FORWARD 1
> -m mac --mac-source  " $3 " -s " $2 "
> -j ACCEPT"}'|sh

Еще раз Спасибо Вам!

Хочу доработать скрипт включения и отключения пользователей!

Опишу все с нуля:

Наша база пользователей:
user1 10.10.0.1 00:00:00:00:00:00
#user2 10.10.0.2 11:11:11:11:11:11
#user3 10.10.0.3 22:22:22:22:22:22

Ваша команда которая дает доступ абонентам при старте системы, при этом закоментированные строки не выполняются:
cat base |grep -v "^#" | awk '{print "iptables -I FORWARD 1
> -m mac --mac-source  " $3 " -s " $2 "
> -j ACCEPT"}'|sh

И скрипты включения и отключения пользоваталей:

Включаем так:
echo "Введите абонента:"
read name
ip=`sed /$name/p -n base | cut -d" " -f2`
mac=`sed /$name/p -n base | cut -d" " -f3`
iptables -R FORWARD 1 -m mac --mac-source $mac -s $ip -j ACCEPT

Выключаем:
echo "Введите абонента:"
read name
ip=`sed /$name/p -n base | cut -d" " -f2`
mac=`sed /$name/p -n base | cut -d" " -f3`
iptables -R FORWARD 1 -m mac --mac-source $mac -s $ip -j DROP

подскажите мне пожалуйста, что мне нужно добавить в эти скрипты, чтобы при выполнении каждого из них добавлялся или удалялся символ - # в начало строки нужного нам абонента в базе?

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "bash одна команда выполнить все значения из файла"  +1 +/
Сообщение от shadow_alone (ok) on 05-Янв-15, 12:03 

> подскажите мне пожалуйста, что мне нужно добавить в эти скрипты, чтобы при
> выполнении каждого из них добавлялся или удалялся символ - # в
> начало строки нужного нам абонента в базе?

Как бы не красиво с Вашей стороны выходит - Вы хотите чтоб за Вас всё сделали. Вернее было бы перейти на товарно-денежные отношения, и Вам бы все сделали в лучшем виде.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "bash одна команда выполнить все значения из файла"  +/
Сообщение от tnega (ok) on 05-Янв-15, 14:54 
>> подскажите мне пожалуйста, что мне нужно добавить в эти скрипты, чтобы при
>> выполнении каждого из них добавлялся или удалялся символ - # в
>> начало строки нужного нам абонента в базе?
> Как бы не красиво с Вашей стороны выходит - Вы хотите чтоб
> за Вас всё сделали. Вернее было бы перейти на товарно-денежные отношения,
> и Вам бы все сделали в лучшем виде.

Вы меня извините, я просто задаю вопросы раньше времени.
Успеваю разбираться и изучать основы сам.
Уже справился с поставленной задачей.

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру