Как запланировать задание, которое зависит от доступности сети?

Вы добавляете второй домен то же, поскольку первые - создают запись в /var/named/chroot/etc/bind/named.conf обращение к новой зоне и ее имени файла (самый легкий путь состоит в том, чтобы скопировать по строке с mydomain.com и переименуйте mydomain кому: mydomain2 на всех точках строки затем скопируйте mydomain.com.db к mydomain2.com.db и отредактируйте новый файл для отражения различий между mydomain.com и mydomain2.com

Вы можете (и вероятно должен) использовать тот же NS и записи MX для обоих доменов.

ETA: строка в named.comf будет примерно походить на это:

zone "mydomain.com" { type master; file "mydomain.com.db"; };

Надлежащий файл hosts выглядит примерно так:

;-----------------
;mydomain.com.db
;-----------------
@               IN      SOA     ns.mydomain.com.  postmaster.mydomain.com. (
                2011060701 ; serial
                28800      ; refresh
                7200       ; retry
                604800     ; expire
                86400)     ; minimum
;-----------------
; Nameserver(s) for the mydomain.com domain
;-----------------
@               IN      NS      ns.mydomain.com.
                IN      NS      ns2.mydomain.com.
                IN      NS      ns3.mydomain.com.
;-----------------
; Mail server(s) in the mydomain.com domain
;-----------------
@                   IN      MX      10      mail.mydomain.com.
                    IN      MX      20      some.fallback.server.
;-----------------
; Address record(s) for the mydomain.com domain 
;-----------------
localhost      IN      A               127.0.0.1
@              IN      A               12.34.56.78
www            IN      CNAME           mydomain.com.
mail           IN      A               34.21.75.68
pop3           IN      CNAME           mail
;-----------------

Обратите внимание, что любое имя FQDN должно закончиться a. или связать, будет неявно лавировать mydomain.com после него. Строки, которым предшествует точка с запятой, являются комментариями.

6
20.09.2016, 04:16
2 ответа

Выполните задание, когда Вы соединитесь с сетью. Большинство дистрибутивов имеет инфраструктуру сценариев, которую можно включить, хотя Вы должны будете базироваться полномочия. Если Вы соединяетесь с NetworkManager или Wicd, у них есть своя собственная инфраструктура рычага также. Добавьте задание крона, которое только работает, если сеть доступна (и, дополнительно, только если задание не было выполнено выполненное в долгое время), в случае, если сеть остается связанной в течение долгого времени.

Вы не указываете свое распределение, таким образом, я дам пример для находящегося в Debian распределения. Сценарии в /etc/network/if-up.d выполняются после того, как интерфейс поднят; посмотрите interfaces(5) страница справочника для получения дополнительной информации. Запишите сценарий /etc/network/if-up.d/zzzz_balki_git_pull такой как это:

#!/bin/sh
su balki -c /home/balki/bin/pull_repository_if_old

с a pull_repository_if_old это делает что-то вроде этого (работать git pull если сеть доступна, если нет метка времени, которая меньше чем 7 дней):

#!/bin/sh
set -e
if [ -z "$(find /path/to/.repository.pull.timestamp -mtime -7)" ] &&
   ping -c 1 -w 1 repository.example.com >/dev/null 2>/dev/null
then
  cd /path/to/repository
  git pull
  touch /path/to/.repository.pull.timestamp
fi
EOF

И crontab запись на Вашей учетной записи:

28 4 * * * /home/balki/bin/pull_repository_if_old
2
27.01.2020, 20:28
  • 1
    Спасибо. Но для такой простой задачи, мне нужно к 1. Запишите сценарий 2. Имейте корневые полномочия 3. Сделайте распределение определенное сцепление 4. Запишите запись вкладки крона 5. Создайте файл метки времени.:( Мне жаль, что опыт не был лучше. –  balki 09.11.2017, 22:03

Использовать anacron, потому что Вы не возрастете на 24/7, затем добавьте некоторое волшебство гарантировать, что сеть произошла (путем проверки с помощью ping-запросов шлюза по умолчанию), и если не задерживают выполнение.

Вот сценарий в качестве примера, который получит Вас близко:

#!/bin/bash
cd repo
JOB="git pull"
ping -c 2 $(netstat -rn | awk '/^0.0.0.0/ {print $2}') 2>&1 > /dev/null && $JOB || echo $JOB | at $(date --date="+1 hour" +%H:%M)
4
27.01.2020, 20:28

Теги

Похожие вопросы