BSDPORTAL.RU

На этом сайте обсуждаются вопросы использования ОС FreeBSD
 Портал  •  Статьи  •  Форум  •  Wiki  •  Поиск  •  FAQ  •  Обои  •   Официальная документация  •  Новые темы 

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Нужна помощ в создании скрипта...
СообщениеДобавлено: Вт 15 апр, 2008 12:03 pm 
Не в сети

Зарегистрирован: Вт 26 дек, 2006 10:36 am
Сообщения: 3
Доброго времени суток. В кратце опишу задачу: Подключаясь к серверу FreeBSD через ssh требуется чтобы определялся ip адрес вошедшего, после чего в фаервол добалялось правило
ipfw add "№ правила из определенного диапазона к примеру от 450 по 460" allow ip from ${адрес подключивегося} to 10.1.1.* 3389.
После выхода пользователя из ssh по клавишам Ctrl+C или Ctrl+x или др. в фаерволе происходило удаления правила именно с тем номером под которым подключился клиент. При этом ssh соединеие не позволяло бы входить на файловую систему сервера тоесть тип учетной записи nologin или что то вроде этого.
Вообще все это нужно для того чтобы открыть доступ к адресу и порту который сервер под управлением FreeBSD редиректил бы на адрес внутренней сети. Что касается редиректа, тут все просто это я сделал. Но написать такого рода скрипт я пока просто не могу, потому как не владею этим языком! Буду очень признателен в помощи при создании данного скрипта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 16 апр, 2008 9:11 am 
Не в сети

Зарегистрирован: Вт 26 дек, 2006 10:36 am
Сообщения: 3
В общем и целом я почти решил задачу и продумал как это все реализовать. Подскажите только знатоки ssh, как из who выбрать ip адрес подключившегося? Например имеем вот такой вывод команды "who":

testert2 ttyp6 16 апр 08:06 (10.20.31.40)

Как записать (10.20.31.40) в переменную???
Сначала я сделаю выборку who |grep tester2 - это будет прописано в стартовом скрипте именно этого пользователя и хочу чтобы эта строка записалась в переменную, после чего выбрать из этой переменной ip адрес. Загвоздка у меня теперь только с этим.

Где все?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 16 апр, 2008 12:45 pm 
Не в сети

Зарегистрирован: Ср 18 апр, 2007 5:49 pm
Сообщения: 142
Попробуй так:
Код:
who | grep tester2 | awk -F "(" '{print($2)}' | awk -F ")" '{print($1)}'


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 16 апр, 2008 2:09 pm 
Не в сети

Зарегистрирован: Ср 12 янв, 2005 7:14 am
Сообщения: 1419
Откуда: Murmansk
так:
VAR=$( who | perl -ne 'print /\((.+)\)$/' )
или так:
who | cut -d\( -f2 | cut -d\) -f1
или так:
who | tr -s "() " "\t" | cut -f6

(-; Первый самый правильный

только пару моментов - если ip ресолвится, то там будет имя машины - это раз; а второе - если юзер зайдет с нескольких адресов, или, сам на себя - что тогда?... Правильней тогда было бы сделать цикл:
Код:
$ who | tr -s "() " "\t" | cut -f6 | \
   while read addr ; do
       echo "сделать чтото с $addr"
   done


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 16 апр, 2008 2:28 pm 
Не в сети

Зарегистрирован: Ср 12 янв, 2005 7:14 am
Сообщения: 1419
Откуда: Murmansk
И еще - в ipfw можно использовать uid и пр. - может лучше воспользоваться штатными средствами ipfw?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 16 апр, 2008 3:03 pm 
Не в сети

Зарегистрирован: Вт 26 дек, 2006 10:36 am
Сообщения: 3
[quote="inspirra"]так:
VAR=$( who | perl -ne 'print /\((.+)\)$/' )
или так:
who | cut -d\( -f2 | cut -d\) -f1
или так:
who | tr -s "() " "\t" | cut -f6

(-; Первый самый правильный

Почти так. Но ведь мне нужно получать вывод команды who только для конкретного пользователя, а значит нужно выбирать. grep | tester2... в этом случае больше подходит. Для каждого пользователя будет свой скрипт.
Всем спасибо, что помогли. Теперь решаю как сделать так чтобы по выходу из сеанса происходило обратное действие, тоесть чтобы из ipfw удалялась эта строка...
Сейчас скрипт выглядит вот так:

#!/bin/sh

fwcmd="/sbin/ipfw"

ip=`who | grep tester2 | awk -F "(" '{print($2)}' | awk -F ")" '{print($1)}'`

echo "Ваш ip адрес:" $ip

${fwcmd} add 102 allow all from ${ip} to 10.20.34.2 3389


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт 20 май, 2008 12:46 pm 
Не в сети

Зарегистрирован: Пт 25 янв, 2008 10:18 am
Сообщения: 51
А смысл какой у всего этого??

нельзя ли сделать доступ по ключам и раздавать ключи только доверенным пользователям, при этом ограничить доступ с авторизацией по всем остальным типам авторизации.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Зарегистрированные пользователи: Bing [Bot], Google [Bot], Google Feedfetcher


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
Яндекс.Метрика