19 November 2011

Hosts Commander — консольный редактор hosts для Windows и Linux

Website developmentMono & MoonlightC#
Hosts Commander призван максимально облегчить работу с файлом hosts из консоли. Если вам время от времени приходится забираться в этот файл (что характерно для веб-разработчика), и вы любите консоль — Hosts Commander может прийтись вам по душе.
Год назад на Хабрахабре была анонсирована первая версия программы, которая работала только под Windows. Но с тех пор многое изменилось и стало лучше. Это отличный пример, как из простой идеи может вырасти нечто большее.

С чего всё начиналось?


  • Операции добавления, удаления, отключения и скрытия хостов
  • Отображение хостов из hosts по маске
  • Операции над хостами по маске
  • Сохранение исходного оформления и кодировки файла hosts
  • Создание резервной копии hosts и восстановление
  • Поддержка Windows XP/Vista/7 (.NET 3.5)

Что появилось нового?


Поддержка Linux


С самого начала казалось, что консоль Linux и без этого имеет очень богатые возможности, поэтому появление подобной программы не будет оценено сообществом. Однако, я получил несколько писем с просьбой реализовать возможность работы под Linux.
В последней версии Hosts Commander появилась поддержка Linux и других Unix-подобных операционных систем. Запуск с правами суперпользователя требуют только команды, изменяющие содержимое hosts.
Для запуска необходимо установить Mono 2.8+, который в некоторых дистрибутивах (например, Ubuntu) есть по умолчанию.
Запуск выполняется командой вида mono hosts.exe param1 param2 param3, что не совсем удобно. Но вы легко можете создать alias hosts="mono hosts.exe" для работы с hosts так же, как и под Windows.

Поддержка алиасов и умная команда add


Иногда удобно в одной записи хранить сразу несколько доменов (например, версию с www и без) и оперировать ими вместе. Hosts Commander теперь позволяет это делать. Более того, при добавлении новой записи команда add сама догадывается, где IP адрес, а где домен и его алиасы, поэтому нет необходимости помнить, в каком порядке необходимо указывать параметры. Всё что после знака # считается комментарием, поэтому нет необходимости писать его в кавычках.
Примеры:
hosts add mydomain.ru www.mydomain.ru 192.168.0.1 # my comments
hosts add 192.168.0.1 mydomain.ru www.mydomain.ru

Поддержка IDN (русскоязычные домены)


Русскоязычные домены должны храниться в hosts закодированными в Punycode (xn--). Вручную сгенерировать xn--d1abbgf6aiiy.xn--p1ai из президент.рф не так просто, да и при беглом просмотре hosts без комментариев не ясно, где какой русскоязычный домен.
Hosts Commander решает эту проблему. Все русскоязычные домены хранятся в Punycode, но программа работает с декодированными версиями.
Примеры:
hosts add мойдомен.рф mydomain.ru www.mydomain.ru # локальный домен — добавление хоста с алиасами, по умолчанию IP 127.0.0.1.
hosts view *.рф — отображение доменов в зоне.рф

Поддержка IPv6 адресов


IPv6, к сожалению, сегодня используется недостаточно активно. Однако, современные ОС поддерживают его в полной мере. Hosts Commander может похвастаться тем же:
hosts add ipv6demo.local ::1
В связи с тем, что в одном файле hosts может быть объявлено две записи с одним и тем же доменом, но с IPv4 и IPv6 адресами, команда add теперь всегда добавляет новый хост в конец файла, а для обновления существующих записей используется команда set. Это достаточно спорный момент. Если у вас есть идея, как сделать команды add и set более удобными и прозрачными — просьба поделиться в комментариях или на email.

Откат последней операции


Некоторые команды могут приводить к серьёзным последствиям. Например, случайно выполненный hosts rem * удалит все записи в файле hosts, а вы просто хотели набрать hosts rem *.рф, но нажали ввод раньше времени.
Сейчас простая команда hosts rollback позволяет откатить последнюю операцию над hosts.

Встроенный командный интерпретатор


Теперь при запуске hosts без параметров запускается встроенный командный интерпретатор. Он поддерживает все команды, доступные для прямого вызова. Главное отличие — не нужно перед каждой командой писать hosts. Удобно, если вам необходимо выполнить множество операций с файлом hosts. Ещё одно преимущество при запуске из консоли с ограниченными правами под Windows Vista/7: после согласия на предоставление Hosts Commander доступа к системе откроется новое окно, которое не будет тут же закрыто.
Выход из командного интерпретатора осуществляется командами exit или quit.

Итого


Проект вместе с исходниками и более подробной документацией доступен на его страничке.
Топик открыт для отзывов и предложений. Если вы столкнулись с какими-то проблемами в работе программы, просьба сообщить об этом, и я постараюсь решить их.

Спасибо за внимание.
Tags:hostscmdcommand linehosts commander
Hubs: Website development Mono & Moonlight C#
+4
5.9k 27
Comments 39
Ads