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 часа


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

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


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

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