Как стать автором
Обновить

Простенький скрипт для переключения настроек сети

Время на прочтение2 мин
Количество просмотров2.6K
Я пользуюсь Slackware, в котором до минимума сведены утилиты с графическим интерфейсом. Откровенно говоря, иксы я тоже не столь часто гружу. Однако, во времена, когда я сидел на Убунте, мне понравился Network Manager, который висел в трее и индицировал работу сетевых интерфейсов. Впрочем, важно было другое — в нем можно было создавать «конфигурации» сетевых настроек и между ними переключаться (по типу «работа», «дом», «кафе»). В Slackware у меня был под рукой только netconfig на базе ncurses, который тупо переписывал некоторые файлы. Многократно запуская его в разных местах я получал не тот эффект, который бы хотел — настройки из предыдущего места стирались. Тогда я решил написать простенький скрипт, позволяющий «переключать» настройки в стиле Network Manager. Сделал я это грубо, не исключаю, что есть более тонкое решение, но он работает и в какой-то мере универсален.

Публикую его ниже, если кому-то будет полезен:
  1. #!/bin/bash
  2.  
  3. # Файлы, которые контролирует скрипт
  4. FILES="/etc/rc.d/rc.inet1.conf /etc/resolv.conf"
  5.  
  6. print_help () {
  7.   echo To use print 
  8.   echo
  9.   echo switch_net.sh location 
  10.   echo
  11.   for file in $FILESdo
  12.     echo File $file under control
  13.   done 
  14. }
  15.  
  16. if [ -z $1 ]
  17. then
  18.   print_help
  19.   exit
  20. fi
  21.  
  22. for file in $FILESdo
  23.   if [ ! -f $file.$1 ]then
  24.     echo File $file.$1 not exists, please point to existing one
  25.     exit
  26.   fi
  27. done
  28.  
  29. for file in $FILESdo
  30.   ln -sfv $file.$1 $file
  31. done
  32.  
  33. echo Restarting inet
  34. /etc/rc.d/rc.inet1 restart
  35.  

Пользоваться им очень просто. Он перебрасывает линки на файлы, в которых хранится фактическая конфигурация. Я отслеживаю только /etc/rc.d/rc.inet1.conf и /etc/resolv.conf. В этом случае, они уже будут не файлами, а линками на /etc/rc.d/rc.inet1.conf.location и /etc/resolv.conf.location. Я их создаю вручную, потом делаю switch_net, потом netconfig, когда прихожу на «новое место». Чтобы переключиться с одного на другое достаточно с правами суперпользователя выполнить switch_net:
bash-4.1sudo switch_net home
Password:
«/etc/rc.d/rc.inet1.conf» -> «/etc/rc.d/rc.inet1.conf.home»
«/etc/resolv.conf» -> «/etc/resolv.conf.home»
Restarting inet
Теги:
Хабы:
+23
Комментарии8

Публикации