Назад | Перейти на главную страницу

как изменить / etc / hosts из сценариев оболочки?

Мне нужно кое-что изменить hosts записи - например, есть желание обновить hosts иметь active.vm host соответствует IP-адресу загруженной в данный момент виртуальной машины (с некоторым тестовым устройством). Гостевое программное обеспечение в виртуальной машине сообщает адрес машины обратно на хост, и мне нужно обновить / etc / hosts на основе этой информации - всегда есть время для написания другого daemon / cronjob, но я хотел использовать что-то существующее для исправления hosts записи с тупым синтаксисом hostname current_ip.

Кто-то порекомендовал мне bind-tools пакет, но - его nsupdate|host совершенно не подходят для этой задачи. ..

Upd: все еще ищу что-то из набора связывания, но, по крайней мере, динамическая регенерация кажется лучшим решением, и augtool тоже хорош.

Upd: из-за моей лени динамическую регенерацию сейчас не планируется использовать, поэтому начал использовать augtool в cronjob, который читает журналы доступа веб-сервера для последнего IP-адреса - на виртуальных машинах, работающих под управлением Windows, все решение для мониторинга - это просто загружаемый веб-браузер конкретный URL-адрес с хост-машины и имеет небольшой интервал перезагрузки

Я бы предпочел не трогать /etc/hosts в плане парсинга и тому подобного. Я бы просто создал /etc/hosts.d составить сценарий, который требует:

  • ip
  • название
  • псевдонимы

создает один (1) файл с одной (1) строкой. Имя файла будет <ip>.host а потом cat /etc/hosts.d/*host > /tmp/hosts.new ** mv /tmp/hosts.new /etc/hosts. Может быть, добавить событие incron, которое смотрит /etc/hosts.d каталог и восстанавливается всякий раз, когда что-то происходит, таким образом вы также избавитесь от старых записей.

Взгляни на Augeas. У него есть готовый парсер / сериализатор для файла hosts (это даже в их кратком руководстве) и поставляется с простым инструментом для внесения изменений (augtool).