Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: скрипт заменяющий строку в файле  (Прочитано 2749 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн utahrzd

  • Автор темы
  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
В файле /etc/init.d/rc.iptables есть строка IP_ADDR="111.222.333.444" , начал писать скрипт, который будет заменять в этой строке ИП, который динамически получен через ppp0 (вместо 111.222.333.444):
#! /bin/bash
MY_IP=$(/sbin/ifconfig ppp0 | awk '/inet/ { print $2 } ' | sed -e s/addr://)

exit 0
т.е. тут переменной MY_IP присваивается этот адресс, но не могу найти как его можна подставить вместо 111.222.333.444 в файле /etc/init.d/rc.iptables.
Помогите плииз

« Последнее редактирование: 21 Июня 2009, 02:59:41 от utahrzd »

Оффлайн truegeek

  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: скрипт заменяющий строку в файле
« Ответ #2 : 22 Июня 2009, 13:20:02 »
_phil_, линки левые.
Надо найти возможность передать значение переменной bash в шаблон замены sed в скрипте, либо другой способ решения проблемы.

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: скрипт заменяющий строку в файле
« Ответ #3 : 22 Июня 2009, 13:37:22 »
Замените в /etc/init.d/rc.iptables
IP_ADDR="111.222.333.444"
на
IP_ADDR=`cat /etc/my_ip_address`
А в /etc/my_ip_address складывайте нужный IP.
Просто и быстро.


Пользователь решил продолжить мысль 22 Июня 2009, 13:39:17:
Кстати говоря, а почему нельзя
MY_IP=$(/sbin/ifconfig ppp0 | awk '/inet/ { print $2 } ' | sed -e s/addr://)
добавить сразу в /etc/init.d/rc.iptables вместо IP_ADDR?
« Последнее редактирование: 22 Июня 2009, 13:39:17 от Lion-Simba »
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

Оффлайн truegeek

  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля
Re: скрипт заменяющий строку в файле
« Ответ #4 : 22 Июня 2009, 15:58:27 »
_phil_, линки левые.
Надо найти возможность передать значение переменной bash в шаблон замены sed в скрипте, либо другой способ решения проблемы.
сори, просто скинул для справки ((((

Оффлайн utahrzd

  • Автор темы
  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Re: скрипт заменяющий строку в файле
« Ответ #5 : 22 Июня 2009, 21:23:41 »

Кстати говоря, а почему нельзя
MY_IP=$(/sbin/ifconfig ppp0 | awk '/inet/ { print $2 } ' | sed -e s/addr://)
добавить сразу в /etc/init.d/rc.iptables вместо IP_ADDR?
Завтра буду пробивать, но что-то у меня так не получалось на прошлой неделе, почему и решил писать скрипт. завтра отпишусь
Заранее всем благодарен

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: скрипт заменяющий строку в файле
« Ответ #6 : 23 Июня 2009, 11:43:32 »
Обращаю внимание автора на команду
sed 's/<что_меняю>/<на_что_меняю>/' file.input
sed 's/<что_меняю>/<на_что_меняю>/g' file.input
Второй вариант для множественной замены.

Для использования в трубе приведу кусочек из своего творчества

# обработка строк с расширением ...
###############################################################
# разделение выражений типа XT1:1...XT1:20
   rm ./extStrings2.tmp 2> /dev/null
   echo "$LINE1" | sed -n "/:/p" > extStrings2.tmp
   if [ -s ./extStrings2.tmp ]; then
#      echo "Поймали $LINE1"
      echo "$LINE1" | sed "s/,,,//g" \
      | sed 's/:/\n/g'  > extStrings2.tmp
# убираем ... расщепляем на 2 части
      read NAMEALL < extStrings2.tmp
      NAMEALL=$NAMEALL:
      sed -n '2,2p' extStrings2.tmp > extStrings3.tmp
      read FIRST < extStrings3.tmp
# читаем следующую запись, выделяем только цифры и удаляем Enterы
      read LINE2
#      echo $LINE2
      echo "$LINE2" | sed 's/:/\n/g' | sed -n '2,2p' > extStrings2.tmp
      read LAST < extStrings2.tmp
   
#   echo "NAMEALL= "
#   echo $NAMEALL
#   echo $FIRST
#   echo $LAST

   else
...

Оффлайн utahrzd

  • Автор темы
  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Re: скрипт заменяющий строку в файле
« Ответ #7 : 25 Июня 2009, 08:46:46 »
Все класс, заработало без скрипта.
В rc.iptables прописал строку
IP_ADDR=$(/sbin/ifconfig eth0 | awk '/inet/ { print $2 } ' | sed -e s/addr://)
А раньше у меня не получалось, потому, что я не учел, что иптаблес загружается до получения ип адреса пппое  :-[


 

Страница сгенерирована за 0.017 секунд. Запросов: 22.