2013-03-26 3 views
0

Я использую машину с динамическим ip и dyndns для управления другими удаленными машинами. Что я хотел бы быть в состоянии сделать это для удаленные машины, чтобы проверить IP-адрес в DynDNS имя хоста т.е.Добавить ip хоста в hosts.allow

dig +short unix.stackexchange.com 

и полученный IP будет добавлен в конец строки в hosts.allow с использованием bash, поэтому я могу запускать его каждые 24 часа.

+0

Не делайте этого. 'hosts.allow' принимает имена DNS. –

+0

не работает с dyndns – Lurch

+0

О, вы правы, нужна обратная запись DNS. –

ответ

1

Основная проблема заключается в том, чтобы убедиться, что вы удалите предыдущий, так что я бы добавил некоторый флаг вместе с вашим IP-адресом в hosts.allow. Что-то вроде «My DynDNS Server». Так что в вашем сценарии вы бы сначала удалить помеченную строку (убедитесь, что нет других строк с этим !!):

grep -v "My DynDNS Server" /etc/hosts.allow > /tmp/hosts.allow 
mv /etc/hosts.allow /etc/hosts.allow.old 
mv /tmp/hosts.allow /etc/hosts.allow 

А затем добавить новую один:

echo $service : `dig +short unix.stackexchange.com` : allow "# My DynDNS Server" >> /etc/hosts.allow 

Надеется, что это помогает!

+0

Хорошее мышление, но cat /etc/hosts.allow | grep -v «Мой сервер DynDNS»> /etc/hosts.allow просто создает пустой hosts.allow? – Lurch

+0

'cat' бесполезен,' grep' может открывать файлы самостоятельно. Перенаправления из/в один и тот же файл опасны, вы рискуете потерять весь файл. Используйте временный файл. –

+0

Это не должно быть пустым, потому что я удаляю одну строку, но я отредактировал, чтобы обеспечить наиболее безопасное решение. – ophintor

Смежные вопросы