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

    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.

    Итого


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

    Спасибо за внимание.
    Support the author
    Share post

    Comments 39

      –1
      Сделайте, пожалуйста еще и .htaccess commander!

      Веб-разработчики готовы его покупать за любые деньги.
        +2
        Вы хотели сказать быдлокодеры делающие три поиска в гугле на каждую строчку кода.
          +7
          Не уметь/не хотеть искать в гугле это плохо.
          Искать, значит, тоже плохо. Что же хорошо?
            –8
            Не называть себя веб-разработчиком пока не научишься быть им.
              –5
              Минусующие за версию: чтобы стать веб-разработчиком достаточно им назваться и уметь пользоваться гуглом? :)
                +3
                минусующие, наверное, за то что уменить программировать или верстать — не тоже самое что знать наизусть все функции, методы и классы всех языков и фреймворков.
                  0
                  Мне жаль тех кто гуглит названия функций, методов, классов. Ведь это значит, что человек даже IDE не настроил под свои нужды.
                    0
                    А если я, простите, не пользуюсь IDE?
                      +3
                      Да и каким образом настроенная IDE поможет вам если вы не знаете нужной функции? Она вам по первым буквам подсказать может, но никак не выбрать нужную функцию за вас.
            +2
            Профессиональные вебразработчики почему-то не знают, откуда есть пошла такая уродливая семантика файла .htaccess, как Сысоев пытался избавиться от подобного в nginx и что из этого получилось.

            А быдлокодеры, что удивительно, знают, и отдают себе отчёт, что в том виде, в котором сейчас существует .htaccess — это ужосо, страх и разрушение.

            Как хорошо, что я быдлокодер.
              0
              Я знаю и о семантике htaccess и конфиг nginx меня не пугает, что не делает меня быдлокодером :)

              Кстати, мечтающие об .htaccess коммандере наверное генераторами регулярных выражений какими-нибудь пользуются? А от правил iptables у них вообще истерика будет :)
                0
                > Кстати, мечтающие об .htaccess коммандере наверное генераторами регулярных выражений какими-нибудь пользуются?

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

                webhamster.ru/site/page/index/articles/projectcode/181
            +7
            не очень понял, а чем простое редактирование этого файла неудобно?
              0
              Отсутствие операций по маске (например, удалить все домены со словом adobe или отобразить все домены в зоне .local), необходимость тратить время на открытие файла (когда консоль всегда под рукой), серьёзные неудобства при создании русскоязычных доменов и множество других мелочей.
                +6
                $ sudo sed '/adobe/d' -i /etc/hosts
                  0
                  Затронет все строки, где в комментариях будет слово adobe.
                    +6
                    Никогда не оставлял комменты в host файле.
                      +5
                      Никогда не оставлял комментарий «adobe» в файле hosts.
              +10
              Если возникает необходимость в таком инструменте, то стоит задуматься о развёртывании собственного DNS-сервера.
                +3
                Перед тем как зайти в пост поспорил с другом что такой комментарий будет в первой тройке. Спасибо вам за пиво!
                +11
                В Linux для того чтобы отредактировать hosts ставить Mono? Это перебор
                  –2
                  В некоторых дистрибутивах Mono устанавливается по умолчанию. Там, где его нет, не вижу ничего плохого в том, чтобы его поставить – много хороших программ им пользуются.
                    +1
                    Программ много, но если они мне не нужны, то ставить mono желания не возникнет. Mono — это монстр в Linux.

                    А в чем причина использования mono?
                      –1
                      Почему Mono монстр — не понятно. Он же не держит никаких демонов в фоне, то есть не требует никаких ресурсов, кроме места на жёстком диске.
                      Hosts Commander с самого начала был написан на C# под .NET 3.5. Небольшие изменения в зависимом от платформы коде (связано с определением местоположения файла hosts) позволили программе работать под Mono на Linux/Mac OS X.
                      +1
                      Его даже из Ubuntu выпиливают.
                        –1
                        На мой взгляд это связано с тем, что в новой Ubuntu не осталось программ, использующих Mono. Это же не повод считать Mono плохим фреймворком.
                          +3
                          Это вам на семинаре microsoft сказали?
                            0
                            Нет, на семинары Microsoft не хожу. Microsoft вообще-то Mono не поддерживает. Этим занимается Xamarin.
                            Очень жаль, что вы считаете технологию плохой только потому, что к ней имеет отношение Microsoft. На самом деле не всё, что было создано в этой компании, так плохо, как вам кажется :)
                    0
                    > mono hosts.exe param1 param2 param3…

                    Это типа как wine или что вообще?
                      +1
                      Это что-то вроде Java Virtual Machine.
                        0
                        Хуже. Java тормозит не так сильно, как mono.
                          0
                          Под Windows по крайней мере у меня приложения на .NET работает быстрее, чем на Java. И возможностей по оптимизации кода C# больше предлагает. Думаю, Mono ещё расти и расти. В начале следующего года должен выйти Mono 3.0, там по крайней мере с памятью должно быть намного лучше, чем сейчас.
                            0
                            Mono, все-таки, не для windows разрабатывался.
                            И с моей точки зрения лучше поделие под названием «C#» вне венды не использовать. Мало ли что руководству M$ придет в голову!
                            Надо, все-таки, разделять технологии: пользуетесь проприетарщиной — пользуйтесь на здоровье; пользуетесь свободой — на проприетарщину лучше вообще не смотреть.
                              0
                              То есть Java в руках Oracle чем-то лучше? Google уже успела столкнуться с проблемами, когда Oracle подала в суд на Google из-за Java в Android.
                              Microsoft не такая уж и плохая компания. Она так же как и Google зарабатывает деньги, разрабатывая где-то лучшие, где-то худшие решения. Массовое закрытие полезных сервисов типа Google Code, где руководство не увидело потенциальной прибыли, только подтверждает это.
                              К слову, базовая библиотека классов и сам язык C# оформлены как стандарт ECMA/ISO. Mono — свободная реализация этого стандарта, плюс какие-то свои уникальные плюшки, плюс библиотеки типа WinForms для совместимости с .NET (которые не входят в стандарт и собственно могут вызвать некоторые вопросы со стороны Microsoft, но никто не обязывает пользоваться ими).
                                0
                                > То есть Java в руках Oracle чем-то лучше?
                                Нет, конечно. Лично я против Java. Все равно нет ни одного стóящего приложения, написанного на Java, для которого не было бы нативного решения (которое к тому же быстрее работает).

                                > Microsoft не такая уж и плохая компания
                                То-то они патентным троллингом подрабатывают!

                                А вообще, как говорится, все на любителя. Но когда в линуксе видишь поделку на Java или Mono, то 99% вероятности того, что ее разработчики — либо специализируются на венде, либо на макоси. Но никак не на линуксе.
                                  0
                                  Насчёт патентного троллинга согласен, это очень не этично со стороны Microsoft.
                      0
                      Первая реакция: mono? linux? Но всем иногда нужно развлекаться )
                        +1
                        Благодарю. Пришлась по душе, действительно :)
                          0
                          Спасибо за отзыв :)

                        Only users with full accounts can post comments. Log in, please.