Как изменить /etc/hosts из сценариев оболочки?
Мне нужно изменить некоторые hosts
записи - например, есть желание обновить hosts
иметь active.vm
хост совпадает с IP -адресом загруженной в данный момент виртуальной машины (с некоторым устройством тестирования). Гостевое программное обеспечение внутри ВМ сообщает адрес компьютера обратно хосту, и мне нужно обновить /etc/hosts на основе этой информации - всегда есть время для написания другого демона /cronjob, но он хотел использовать что-то существующее для исправления hosts
записи с тупым синтаксисом hostname current_ip
,
Кто-то рекомендовал мне bind-tools
пакет, но - его nsupdate
|host
не подходит для задачи вообще...
Upd: все еще ищет что-то в bind suite, но, по крайней мере, динамическая регенерация кажется лучшим решением, и augtool тоже хорош.
Upd: из-за моей лени динамическое восстановление не планируется использовать прямо сейчас, поэтому начал использовать augtool в cronjob, который читает журналы доступа веб-сервера для последних IP - на виртуальных машинах, работающих под Windows, все решение для мониторинга - это просто веб-браузер, который загружает конкретный URL с хоста и имеет небольшой интервал перезагрузки
2 ответа
Посмотрите на augeas. Он имеет готовый синтаксический анализатор / сериализатор для файла hosts (даже в их кратком путеводителе) и поставляется с простым инструментом для внесения изменений (augtool).
Я бы предпочел не трогать /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
каталог и регенерирует всякий раз, когда что-то происходит, таким образом, вы также избавитесь от старых записей.