UPD: Таже самая цель, но меньшей кровью — настройка dnsmasq
Зачем это надо.
Надо это затем что есть например 10 локально поднятых проектов на рабочей станции разработчика. Этот разработчик
- Для работы с локальной копией проекта редактирует конфиг своего веб сервера (apache, lighttpd etc.) и указывает в конфиге имя хоста для этого локального проекта.
- Потом перезапускает веб сервер.
- Потом тащится редактировать /etc/hosts Прописывает там имя хоста и локальный ip.
- Потом выясняет что этот прописанный хост перекрывает тот который был в интернете или он ошибся когда прописал имя в конфиге веб-сервера или в hosts.
В итоге всего этого занудства как правило тратится драгоценная нервная энергия которую можно потратить более эффективно на что-то поинтереснее.
Что я предлагаю сделать.
Я предлагаю сделать локальный домен (в примере .mydev) и сократить процедуру выше до двух шагов:
- Прописываем конфиг веб-сервера с хостом вида projectname.mydev
- Перезапускаем веб-сервер.
И всё. И радостно начинаем допиливать наш проект по заданному имени.
Что будем делать, TODO
- Установим DNS сервер.
sudo apt-get install bind9 - Идем разглядывать собственно конфиги. Принцип нашей этой гадости состоит в том что на данный момент при обращении к какому-либо хосту (это грубая схема) наша машинка ломится на провайдерский DNS выданный ему провайдером или прописанный иным образом это не суть. Получает собственно у DNS-а айпишник хоста ну и соответственно отправляется за данными в его сторону. Дальше нам не интересно.
Как будет. Будет так: при обращении к какому-либо хосту, мы будем обращаться к локальному DNS серверу, который будет проверять наши правила и если запрос не попадает под наши правила, то наш локальный DNS идет и спрашивает тоже самое у провайдерского DNS-а. И отдает нам уже собственно его (провайдера) ответ. Итак, идем к конфигам
cd /etc/bind
Я пользуюсь mc, это удобно, рекомендую. Нам понадобятся права суперпользователя, так что либо sudo mc, либо sudo mcedit filename при редактировании каждого файла, вопрос с правами я далее затрагивать не буду. - Открываем на редактирование named.conf.options
Тут нас интересует секция forwarders её нам нужно раскомментировать и указать IP адрес(а) DNS сервера провайдера (или может быть роутера, смотря как организован выход в интернет). Сохраняем, выходим. - Открываем на редактирование named.conf.default-zones
Тут нам вниз нужно добавить новую зону. Выглядеть новая секция будет вот так:zone "mydev" { type master; file "/etc/bind/db.mydev"; };
- По указанному пути создаем файлик
sudo cp /etc/bind/db.local /etc/bind/db.mydev
То есть просто делаем копию описания локальной зоны. Нам нужно будет в ней кое-что отредактировать. Итак копию сделали, теперь: - Открываем на редактирование db.mydev
Там нам нужно исправить всего несколько строк. В итоге наш db.mydev будет выглядеть вот так:$TTL 604800 @ IN SOA mydev. root.mydev. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL @ IN NS mydev. @ IN A 127.0.0.1 * IN A 127.0.0.1 @ IN AAAA ::1
Жирным отмечены строки которые были отредактированы или добавлены. Сравните с оригинальным db.local для того чтоб было понятно что произошло. По сути ничего особенного. - Теперь остается только перезапустить наш DNS
sudo /etc/init.d/bind9 restart - Ну и проверяем теперь как эта карусель работает.
ping 11.mydev
ping 22.mydev
Если работает то IP должен быть тот что вы указали (в примере 127.0.0.1) Но сейчас ничего не работает. Потому что.. - Забыл рассказать про грабли. Наш уважаемый NetworkManager автоматом прописывает в /etc/resolv.conf адрес DNS провайдера. Если там будет прописан внешний DNS то наша поделка пролетит как фанера над Парижем. Обращения в сеть просто пойдут мимо неё. Чтобы это дело устранить, нужно зайти в свойства текущего подключения к интернету, "Изменить соединения" => Выбираем наше соединение => "Параметры IPv4". Тут указываем IP нашего локального DNS (в примере 127.0.0.1), сделать это можно выбрав метод "DHCP, только адрес". Этого должно быть достаточно. После этого через NetworkManager соединение разрываем и снова устанавливаем. Если все ок, то в /etc/resolv.conf мы должны увидеть наш искомый IP, тот что прописали как DNS в NetworkManager.
- Вот теперь проверяем результат.
Вот собственно и всё. Теперь можно не трогать /etc/hosts. Прошу обратить внимание, что решение я нашел сам и возможно оно неоптимальное или даже неправильное, но однозначно рабочее. Ничего подходящего я в интернете по форумам не нашел.
Во-первых конечно же man rename там нет ничего хитрого. rename [режим] [регулярка] [маска_файлов]
Например, в выбранной папке добавляем всем файлам расширение .torrent
cd ~ cd torrents/_torrents pwd # /home/user/torrents/_torrents/ , ok ls -la # приедет список файлов, ок мы там где надо, это точно rename -v 's/.*/$_.torrent/' *Насчет как работает perlexpr извините, придется почитать :) man rename койчем поможет в общих случаях да и этот пример тоже.
А в этом примере в текущей папке у имен файлов *.jade меняется хвост, становится *.html.jade
for file in *.jade ; do new=`echo $file | sed 's/.jade/.html.jade/g'`; echo $file $new ; done
Сие есть краткая памятка хоткеев к популярному файловому менеджеру mc. Сейчас мне приходится работать с ним постоянно и первое время я здорово маялся. Замечу что чаще всего я пользуюсь им из под виндового Putty, соответственно все приведенные хоткеи должны теоретически нормально работать под WinXP\Win7 + Putty при условии что нет каких-то глобально перекрытых хоткеев (у меня например были проблемы, когда "Типографская раскладка Ильи Бирмана" вещь же классная, не давала мне нормально пользоваться путёвыми хоткеями, пришлось сносить). Ну, с преамбулой закончили, теперь собственно сабж:
- F9 - вызов главного меню mc :)
- F2 - вызов меню пользователя
- Ctrl+\ - вызов меню каталогов быстрого доступа (туда же можно сохранять sftp ssh и ftp соединения)
- Ctrl+R - обновить папку (например когда заливали в текущую папку файлы по фтп или кидали туда файлы-результаты)
- Ctrl+U - поменять панели местами
- Ctrl+x c - вызов диалога chmod (такая запись хоткеев здесь и далее означает, что нужно нажать сочетание клавиш, записанных через "+", затем отпустить его и нажать клавишу, записанную через пробел, то есть фактически это такой сложный хоткей получается)
- Ctrl+x o - вызов диалога chown
- Ctrl+o - показать "субконсоль", в ней можно работать, но есть небольшие нюансы. Вообще обычно это нужно чтобы убрать панели с экрана и посмотреть результаты работы какой-то запущеной программы, но на разных ос (фря, дебиан\убунту) я много раз ловил глюки с этой ф-ей. То есть видел черный экран или результаты выполнения чего-то другого. Ну зато эту ф-ю удобно использовать когда надо просто обновить рабочий экран. В командной строке периодически появляется какой-то графический мусор, который быстрее всего сбросить как раз вот так.
- Ctrl+x i - включить\выключить отображение быстрой информации о файле под курсором в неактивной панели
- Alt+h - показать историю комманд
- Esc p - повторить в коммандной строке предыдущую комманду (многократное нажатие ведет к проходу по истории комманд)
- Esc i - отобразить ту же директорию в неактивной панели
- Alt+t - сменить вид текущей панели
- Shift+* - инвертировать текущее выделение файлов (* которая на кнопенции 8)
- Ctrl+x s - создать симлинк файла под курсором
Буду пополнять периодически. Думаю вспомнил я не всё чем пользуюсь.
Серьёзнейшее дело!!
man deluser
Удаление с хомяком вместе без восстановления:
sudo deluser --remove-home user_name # или короче sudo deluser -r user_nameМожно сделать бекап, чтобы узнать как, но всё же придётся посмотреть ман.
Добавить пользователя соответственно: man adduser.
Например.. Как починить флешку. Оказывается, тоже просто. Например, надо починить флешку. Итого:
- Ищем наш целевой диск sudo fdisk -l (по размеру легко можно найти флешку, мозг on)
- Размонтируем целевой диск диск, sudo umount /dev/sdb1 (sdb1 — это пример)
- Ну и.. sudo fsck /dev/sdb1 можно воспользоваться ключиком -p, но вообще круче всего почитать man ;)
В общем, некий аналог виндового chkdsk\scandisk, только умнеее, ну, на первый взгляд.