BSDPORTAL.RU

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

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Вставка символов в строку на shell
СообщениеДобавлено: Ср 28 мар, 2007 9:18 am 
Не в сети

Зарегистрирован: Пн 16 окт, 2006 1:56 pm
Сообщения: 10
Откуда: Пермский край
Здравствуйте.
Подскажите, как поменять в файле символы на определённых местах, в определённой строке.
Например имеем файл ipfw.sh:
Код:
#!bin/sh
FwCMD="/sbin/ipfw"
LanOut="xxx.xxx.xxx.xxx"
LanIn="192.168.0.1"
.......

так вот нужно поменять ip адрес xxx.xxx.xxx.xxx на yyy.yyy.yyy.yyy


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 28 мар, 2007 9:38 am 
Не в сети

Зарегистрирован: Пт 12 янв, 2007 10:40 am
Сообщения: 176
Откуда: Нижний Новгород
sed 's/OLD/NEW/g' <input >output

Поменяет все вхождения строки OLD на NEW в файле. Символы '=', '"', '.' нуждаются в экранировании \=, \", \. . У меня получилось что-то вроде этого:

sed 's/LanOut\=\"xxx\.xxx\.xxx\.xxx\"/LanOut\=\"yyy\.yyy\.yyy\.yyy\"/g' <input >output

Если нужно более конкретно, то и задавайте вопрос более конкретно.

_________________
((lambda (x) (list x (list 'quote x))) '(lambda (x) (list x (list 'quote x))))


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

Зарегистрирован: Пн 16 окт, 2006 1:56 pm
Сообщения: 10
Откуда: Пермский край
thror,
Хорошо, задам вопрос конкретней.
Имеется подключение через ADSL, выдаёеся динамический IP, но этот IP я хочу использовать в правилах IPFW. При поднятии tun0, у меня скриптом выделяется выданый IP адрес:

ppp.linkup:
Код:
provider:
 !bg=/путь/ip_my.sh


ip_my.sh:
Код:
#! /bin/sh
ifconfig tun0 | grep inet | awk '{print $2} > /путь/ip_my.txt


Далее хочу значение этого IP из файла ip_my.txt вставить в переменную LanOut файла ipfw_my.sh:
Код:
#! /bin/sh
FwCMD="/sbin/ipfw"
LanOut="предыдущий IP"
LanIn="192.168.0.1"
.......


Далее запускаю этот файл и применяю правила.
И так при каждом подключении.

Так вот и хотелось бы узнать как сделать так, чтобы при каждом подключении в файле ipfw_my.sh старый IP заменялся на новый?

А может кто-нибудь предложит более оптимальный вариант?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 28 мар, 2007 1:02 pm 
Не в сети

Зарегистрирован: Ср 12 янв, 2005 7:14 am
Сообщения: 1419
Откуда: Murmansk
В ppp.linkup:
Код:
!bg /bin/echo MYADDR > /var/run/ppp-ip.LABEL

* MYADDR и LABEL -- автоматически-заменяемые ppp-переменные

В файле ipfw_my.sh:
Код:
LanOut=$(cat /var/run/ppp-ip.LABEL)

* вместо LABEL -- подставить реальное имя ppp-метки

=======================
Или сразу запускайте из ppp.linkup без всякий промежуточных файлов:
Код:
!bg /path/ipfw_my.sh MYADDR


В файле ipfw_my.sh:
Код:
LanOut=$1


Если я правильно понял задачу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 28 мар, 2007 4:41 pm 
Не в сети

Зарегистрирован: Пт 12 янв, 2007 10:40 am
Сообщения: 176
Откуда: Нижний Новгород
Все. Кажется понял. inspirra правда все сказал. Но я добавлю вот что.

Если проблема только в юзании в ipfw_my.sh текущего ip, то проще простого. Такая конструкция вам поможет если вы предпочитаете конвейеры (обратите внимание на кавычки):
Код:
...
LanOut="`ifconfig tun0 | grep inet | awk '{print $2}'`"
...

А из ppp.linkup лишнее уберите.

_________________
((lambda (x) (list x (list 'quote x))) '(lambda (x) (list x (list 'quote x))))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 28 мар, 2007 5:19 pm 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: Вт 10 авг, 2004 2:24 am
Сообщения: 3353
Откуда: Харьков
thror писал(а):
sed 's/OLD/NEW/g' <input >output


сед умеет менять прямо в файле:
sed -ie 's/ЧТО ИЩЕМ/НА ЧТО МЕНЯЕМ/g' file


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср 28 мар, 2007 5:30 pm 
Не в сети

Зарегистрирован: Пн 16 окт, 2006 1:56 pm
Сообщения: 10
Откуда: Пермский край
Спасибо всем. Сделал как сказал inspirra и всё заработало.


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

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


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

Зарегистрированные пользователи: нет зарегистрированных пользователей


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

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