Возможно вы искали: 'Golden Logres'

May 15 2025 19:16:43
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96111483
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18357
• Обзор The Walking ... 18801
• Обзор DMC: Devil M... 19879
• Обзор на игру Valk... 15877
• Обзор на игру Stars! 17764
• Обзор на Far Cry 3 17948
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17508
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16619
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14721
• Превью Firefall 13479
• Превью Dead Space 3 16334
• Превью о игре SimC... 14730
• Превью к игре Fuse 15442
• Превью Red Orche... 15542
• Превью Gothic 3 16343
• Превью Black & W... 17354
Главная » Статьи » Разное » Редактирование /etc/network/interfaces в Debian средствами sed (sed debian network config shell example)

Редактирование /etc/network/interfaces в Debian средствами sed (sed debian network config shell example)

Ключевые слова: sed, debian, network, config, shell, example, (найти похожие документы)

From: Тарасов Антон aka Ant0 <mailbox@ant0.ru.>
Date: Mon, 20 Oct 2006 14:31:37 +0000 (UTC)
Subject: Редактирование /etc/network/interfaces в Debian средствами sed

Оригинал: http://ant0.ru/sed_edit_interfaces.html

Тарасов Антон aka Ant0

Версия 1.1 от 15 Июня 2006

Составлено: Тарасов Антон aka Ant0 (mailbox@ant0.ru)


В некоторых системных скриптах хотелось бы иметь возможность работы с
конфигом сетевых интерфесов.

Конфиг сетевых интерфейсов в Debian имеет примерно следующий вид:

$ cat /etc/network/interfaces

auto lo eth0 eth1

iface lo inet loopback

iface eth0 inet static
address 192.168.0.13
netmask 255.255.255.0
gateway 192.168.0.1

iface eth1 inet static
address 192.168.1.13
netmask 255.255.255.0

iface ath0 inet static
address 192.168.2.13
netmask 255.255.255.0
wireless-essid home
wireless-nick Notebook
wireless-channel 1
wireless-ap 00:14:86:AC:5A:FA
wireless-rate 54M


Если работать только средствами sh (не говоря о языках более низкого
уровня), то получаеться громоздкий, ресурсоемкий и сложный для
написания и отладки код.

Ниже предлагаю "простенькие" скрипты на sed'е, для типичных операций:


Удаление интерфеса.

sed скрипт в одну строку в теле sh скрипта (имя интерфейса передается
в параметре):

1. #!/bin/sh
2. [ -z "$1" ] && exit 1
3. sed -n "/auto/s/$1 ?//;/iface $1/{:x;n;/iface/by;bx;};:y;p" /etc/network/interfaces

Более подробно на примере sed скрипта:

1. #!/bin/sed -nf
2. # удаляю интерфейс из автоподнимаемых (ищу строку начинающуюся со
# слова auto, в ней ищу имя интерфейса (с пробелом или без) и
# вырезаю его):
3. /auto/s/eth0 ?//
4. #### далее удаление интерфейса и его параметров ####
5. #если строка содержит имя интерфейса, выполняю группу действий:
6. /iface eth1/{
7. #метка:
8. :x
9. #беру на анализ следующую строку (тем самым пропуская вывод этой):
10. n
11. #если начался следующий интерфейс, значит достигнут конец этого
интерфейса - перехожу на метку "y":
12. /iface/by
13. #перехожу на метку "x" (для удаления остальных параметров этого
интерфейса):
14. bx
15. }
16. #метка:
17. :y
18. #вывожу текущую строку на печать:
19. p

В результате работы sh скрипта:

$ ./del_iface eth0

auto lo eth1

iface lo inet loopback

iface eth1 inet static
address 192.168.1.13
netmask 255.255.255.0

iface ath0 inet static
address 192.168.2.13
netmask 255.255.255.0
wireless-essid home
wireless-nick Notebook
wireless-channel 1
wireless-ap 00:14:86:AC:5A:FA
wireless-rate 54M


Еще вариант, хоть и более медленный и более сложный для понимания, но
отображает другой подход:

1. #!/bin/sed -f
2. #прерываю анализ строки, пока не найду строку содержащей имя интерфейса
3. /^iface eth0/!b
4. #удаляю iface чтобы не мешался:
5. s/iface //g
6. #метка:
7. :x
8. #если еще не дошел до следующего интерфейса, то:
9. /iface/!{
10. #прилепляю следующую строку к концу этой:
11. N
12. #перехожу на метку "x":
13. bx
14. }
15. #удаляю все остатки про этот интерфейс:
16. s/^eth1 .*iface/iface/


Удаление параметра интерфеса.

sed скрипт в одну строку в теле sh скрипта (имя интерфейса и удаляемый
параметр передаются параметрами):

1. #!/bin/sh
2. [ -z "$1" -o -z "$2" ] && exit 1
3. sed "/iface $1/!b;:x;n;/$2/d;/iface/b;bx" /etc/network/interfaces

Более подробно на примере sed скрипта:

1. #!/bin/sed -f
2. #пока не найду нужный интерфейс прерываю обработку:
3. /iface eth0/!b
4. #метка:
5. :x
6. #беру на анализ следующую строку:
7. n
8. #ищу параметр и в случае успеха удаляю строку:
9. /address/d
10. #если дошел до следующего интерфейса, значит такого параметра нет
- прерываю обработку:
11. /iface/b
12. #перехожу на метку "x" (пока не найду нужный параметр):
13. bx

Еще вариант, хоть и более медленный и более сложный для понимания, но
отображает другой подход:

1. #!/bin/sed -nf
2. #если строка содержит имя интерфейса, выполняю группу действий:
3. /iface eth0/{
4. #метка:
5. :x
6. #вывожу текущую строку на печать:
7. p
8. #беру на анализ следующую строку:
9. n
10. #если это строка с параметром, то прерываю анализ строки - тем
#самым не выводя на печать искомый параметр
11. /address/b
12. # если начался следующий интерфейс, значит такого параметра нет -
# перехожу на метку "y":
13. /iface/by
14. #перехожу на метку "x" (для удаления остальных параметров этого интерфейса):
15. bx
16. }
17. #метка:
18. :y
19. #вывожу текущую строку на печать:
20. p

Если скрипту передать имя интерфейса как eth, то удалиться заданный
параметр у всех интерфейсов eth (eth0, eth1 и т.д.). Пригодиться, к
примеру, для удаления шлюза по умолчанию (gateway).

В результате работы sh скрипта:

$ ./del_param_iface eth0 address

auto lo eth0 eth1

iface lo inet loopback

iface eth0 inet static
netmask 255.255.255.0
gateway 192.168.0.1

iface eth1 inet static
address 192.168.1.13
netmask 255.255.255.0

iface ath0 inet static
address 192.168.2.13
netmask 255.255.255.0
wireless-essid home
wireless-nick Notebook
wireless-channel 1
wireless-ap 00:14:86:AC:5A:FA
wireless-rate 54M


Замена параметра интерфеса.

sed скрипт в одну строку в теле sh скрипта (имя интерфейса, заменяемый
параметр и значение передаются параметрами):

1. #!/bin/sh
2. [ -z "$1" -o -z "$2" -o -z "$3" ] && exit 1
3. sed "/iface $1/!b;:x;n;s/$2.*/$2 $3/;t;/iface/b;bx"
/etc/network/interfaces

Более подробно на примере sed скрипта:

1. #!/bin/sed -f
2. #пока не найду нужный интерфейс прерываю обработку:
3. /iface eth0/!b
4. #метка:
5. :x
6. #беру на анализ следующую строку:
7. n
8. #ищу в строке нужный параметр и заменяю его
9. s/netmask.*/netmask 255.255.255.0/
10. # в случае успешного выполнения предыдушей операции прерываю обработку:
11. t
12. #если дошел до следующего интерфейса, значит такого параметра нет
- прерываю обработку:
13. /iface/b
14. #перехожу на метку "x" (пока не найду нужный параметр):
15. bx

В результате работы sh скрипта:

$ ./sub_param_iface eth1 address 192.168.3.1

auto lo eth0 eth1

iface lo inet loopback

iface eth0 inet static
address 192.168.0.13
netmask 255.255.255.0
gateway 192.168.0.1

iface eth1 inet static
address 192.168.3.1
netmask 255.255.255.0

iface ath0 inet static
address 192.168.2.13
netmask 255.255.255.0
wireless-essid home
wireless-nick Notebook
wireless-channel 1
wireless-ap 00:14:86:AC:5A:FA
wireless-rate 54M


Добавление параметра интерфеса.

sed скрипт в одну строку в теле sh скрипта (имя интерфейса,
добавляемый параметр и значение передаются параметрами):

1. #!/bin/sh
2. [ -z "$1" -o -z "$2" -o -z "$3" ] && exit 1
3. sed "/iface $1/s/$/nt$2 $3/" /etc/network/interfaces

Здесь: если строка содержит имя интерфейса, то в конец строки добавляю
символ новой строки "n" и добавляемый параметр со значением

В результате работы sh скрипта:

$ ./add_param_iface eth1 network 192.168.3.0

auto lo eth0 eth1

iface lo inet loopback

iface eth0 inet static
address 192.168.0.13
netmask 255.255.255.0
gateway 192.168.0.1

iface eth1 inet static
address 192.168.3.1
netmask 255.255.255.0
network 192.168.3.0

iface ath0 inet static
address 192.168.2.13
netmask 255.255.255.0
wireless-essid home
wireless-nick Notebook
wireless-channel 1
wireless-ap 00:14:86:AC:5A:FA
wireless-rate 54M


Добавление параметра интерфеса (продвинутый вариант).

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

sed скрипт в одну строку в теле sh скрипта (имя интерфейса,
добавляемый параметр и значение передаются параметрами):

1. #!/bin/sh
2. [ -z "$1" -o -z "$2" -o -z "$3" ] && exit 1
3. sed "/iface $1/!b;:x;n;s/$2.*/$2
$3/;t;/^[[:space:]]*$/{N;s/n//;};/iface/s/^/t$2 $3nn/;t;bx"
/etc/network/interfaces

Более подробно на примере sed скрипта:

1. #!/bin/sed -f
2. #пока не найду нужный интерфейс прерываю обработку:
3. /iface eth1/!b
4. #метка:
5. :x
6. #беру на анализ следующую строку:
7. n
8. #если нашел параметр, то заменяю его значение:
9. s/address.*/address 123.123.123.123/
10. #в случае успешной предыдущей операции прервыю обработку:
11. t
12. #если пустая строка
13. /^[[:space:]]*$/{
14. #прилепляю конец следующей к этой
15. N
16. #удаляю n
17. s/n//
18. }
19. #если дошел до следующего интерфейса, значит такого параметра нет
- добавляю параметр и значение:
20. /iface/s/^/taddress 123.123.123.123nn/
21. #в случае успешной предыдущей операции прервыю обработку:
22. t
23. #перехожу на метку "x" (пока не найду нужный параметр):
24. bx

Еще вариант. Мне он нравится больше:

1. #!/bin/sed -nf
2. #пока не найду нужный интерфейс перехожу на метку "y":
3. /iface eth1/!by
4. #метка:
5. :x
6. #вывожу текущую строку на печать:
7. :p
8. #беру на анализ следующую строку:
9. n
10. #если нашел параметр, то заменяю его значение:
11. s/address.*/address 123.123.123.123/
12. #в случае успешной предыдущей операции перехожу на метку "y":
13. ty
14. #если пустая строка, то пропускаю ее вывод
15. /^[[:space:]]*$/n
16. #если дошел до следующего интерфейса, значит такого параметра нет
- добавляю параметр и значение:
17. /iface/s/^/taddress 123.123.123.123nn/
18. #в случае успешной предыдущей операции перехожу на метку "y":
19. ty
20. #перехожу на метку "x" (пока не найду нужный параметр):
21. bx
22. #метка:
23. :y
24. #вывожу текущую строку на печать:
25. :p

В результате работы sh скрипта:

$ ./add_param_iface eth1 network 192.168.3.0

auto lo eth0 eth1

iface lo inet loopback

iface eth0 inet static
address 192.168.0.13
netmask 255.255.255.0
gateway 192.168.0.1

iface eth1 inet static
address 192.168.3.1
netmask 255.255.255.0
network 192.168.3.0

iface ath0 inet static
address 192.168.2.13
netmask 255.255.255.0
wireless-essid home
wireless-nick Notebook
wireless-channel 1
wireless-ap 00:14:86:AC:5A:FA
wireless-rate 54M


Получить значение параметра интерфеса.

sed скрипт в одну строку в теле sh скрипта (имя интерфейса и
запрашиваемый параметр передаются параметрами):

1. #!/bin/sh
2. [ -z "$1" -o -z "$2" ] && exit 1
3. sed "/iface $1/!b;:x;n;/$2/p;/iface/b;bx" /etc/network/interfaces

Более подробно на примере sed скрипта:

1. #!/bin/sed -nf
2. #пока не найду нужный интерфейс прерываю обработку
3. /iface eth1/!b
4. #метка:
5. :x
6. #беру на анализ следующую строку:
7. n
8. #если нашел параметр, то печатаю его:
9. /address/p
10. #другой вариант вместо предыдущей строчки - печатает только
#параметр (вариант 1):
11. #/address/s/^[[:space:]]*address (.*)/1/p
12. #или еще быстрее (вариант 2):
13. #/address/s/^[[:space:]]*address //p
14. #если дошел до следующего интерфейса, то прерываю обработку:
15. /iface/b
16. #перехожу на метку "x" (пока не найду нужный параметр):
17. bx

В результате работы sh скрипта:

$ ./get_param_iface eth1 address

address 192.168.3.1


В результате работы sh скрипта (в вариантах 1 и 2):

$ ./get_param_iface eth1 address

192.168.3.1


Получить список всех интерфейсов определенного типа.

sed скрипт в одну строку в теле sh скрипта (тип передаются
параметром):

1. #!/bin/sh
2. [ -z "$1" ] && exit 1
3. sed -n "/iface .* $1/s/ifac ([a-z0-9]*) .*/1/p" /etc/network/interfaces

Здесь: если строка содержит небходимый тип интерфейса, то вырезаю имя
интерфейса и вывожу его на печать.

В результате работы sh скрипта:

$ ./get_iface_by_type static

eth0 eth1 ath0
768 Прочтений •  [Редактирование /etc/network/interfaces в Debian средствами sed (sed debian network config shell example)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• Редактирование /etc/network/interfa... Ukraine Vova 08.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка