Я использую nc
вместо ping:
franklin() {
local host=franklin.local
if nc -w1 $host 22 &>/dev/null; then
echo "connecting locally"
else
echo "connecting remotely"
host=remote.address.of.franklin
fi
ssh username@$host "$@"
}
Я добавил "$@"
к вызову ssh. Это позволяет нам, Вы быстро выполняете удаленные команды как
franklin uptime
Если динамическая служба DNS, которую Вы используете только, позволяет TTL 3 600, то Ваша единственная опция состоит в том, чтобы переключить поставщиков. Действительно нет никакого способа управлять TTL, если поставщик услуг DDNS не дает Вам опцию управлять им.
Случайно для проверки то, что TTL для данной записи, которую можно использовать dig
со следующими переключателями.
$ dig +nocmd www.google.com +noall +answer | tail -1
www.google.com. 137 IN A 74.125.225.82
$ dig +nocmd www.google.com +noall +answer | tail -1
www.google.com. 135 IN A 74.125.225.115
Таким образом, TTL для этого ответа составляет 137 секунд. Ожидание ~2 секунд и выполнение его снова показывают 135 секунд. TTL означает, сколько времени оставляют, пока запись DNS не истекает, и мы должны пойти, запрашивают авторитетный сервер для домена.
Если мы должны были запросить авторитетный сервер.
$ dig @ns1.google.com +nocmd www.google.com +noall +answer | tail -1
www.google.com. 300 IN A 74.125.225.210
Таким образом, фактический TTL для этой записи составляет 300 секунд.
Примечание: Авторитетный сервер также известен, поскольку SOA - Запускается полномочий.
Можно запросить домен далее для получения информации о SOA.
$ dig +nocmd dyndns.org any +multiline +noall +answer
dyndns.org. 596 IN SOA ns1.dyndns.org. hostmaster.dyndns.org. (
863998266 ; serial
600 ; refresh (10 minutes)
300 ; retry (5 minutes)
604800 ; expire (1 week)
600 ; minimum (10 minutes)
)
dyndns.org. 85904 IN NS ns5.dyndns.org.
dyndns.org. 85904 IN NS ns1.dyndns.org.
dyndns.org. 85904 IN NS ns2.dyndns.org.
dyndns.org. 85904 IN NS ns3.dyndns.org.
dyndns.org. 85904 IN NS ns4.dyndns.org.
dyndns.org. 12268 IN MX 10 mail.dyndns.com.
dyndns.org. 12268 IN MX 20 mx2.mailhop.org.
dyndns.org. 179 IN A 204.13.248.116
Единственный способ изменить запись DNS TTL (за пределами своего рода API, который мог бы обеспечить Ваш регистратор) через сервер.
В Связывают Вас, мог установить Ваш зональный файл как так:
;Zone file for liquidweb.com
$TTL 14400
@ 86400 IN SOA ns.liquidweb.com. admin.liquidweb.com. (
2009022402 ; serial, todays date+todays
86400 ; refresh, seconds
7200 ; retry, seconds
3600000 ; expire, seconds
86400 ) ; minimum, seconds
liquidweb.com. 86400 IN NS ns.liquidweb.com.
liquidweb.com. 86400 IN NS ns1.liquidweb.com.
liquidweb.com. IN A 209.59.139.21
localhost IN A 127.0.0.1
liquidweb.com. IN MX 0 liquidweb.com.
mail IN CNAME liquidweb.com.
www IN CNAME liquidweb.com.
ftp IN A 209.59.139.21
cpanel IN A 209.59.139.21
webmail IN A 209.59.139.21
Вышеупомянутый макрос, $TTL установил бы TTL на 14 400 секунд для любых записей, если это не добирается, переопределил для конкретных записей.
Можно создать хост munin как a CNAME
для внешнего домена поэтому только имя munin использует динамический хост DNS.
munin.yourdomain.com. CNAME somedynamic.dyndns.org.
Таким образом, поиски на самом деле переходят в somedynamic.dyndns.org
который имеет более низкий динамический TTL, остальную часть yourdomain.com
остается на Вашем DNS.
Если не возможно обновить DNS, то можно использовать другой DNS как DynDNS.org и использовать стандартный сценарий обновления.