Мне нужно загрузить файл, когда мой компьютер загружается, поэтому я создал эту строку в своем cronjob:

@reboot wget -a /log/here -O /save/here https://domain.tld/file.ext

К сожалению, он создает пустой файл в /save/here и выдает ошибку в /log/here.

Ошибка говорит:

Resolving domain.tld (domain.tld)... failed: Temporary failure in name resolution.
wget: unable to resolve host address ■domain.tld■

Это потому, что разрешение имен недоступно так рано в процессе загрузки? Помимо замены домена на IP-адрес в обход разрешения имен, могу ли я что-нибудь еще сделать? Я хотел бы сохранить все это в crontab.

0
Gilles Quenot 27 Дек 2019 в 02:28

2 ответа

Используйте модульный файл с зависимостью network, или вы можете попробовать это:

@reboot until ping -c1 dk &>/dev/null; do sleep 2; done; wget -a /log/here -O /save/here https://domain.tld/file.ext

(dk — самое короткое доменное имя, которое я знаю)

1
Gilles Quenot 26 Дек 2019 в 22:34
Спасибо. Я пробовал выше, и это все еще не разрешилось. Затем я настроил свой домен с IP-адресом, и он все еще не работал (он работал в браузере на другом компьютере, но в моем журнале wget было написано: сбой: сеть недоступна). Теперь я пытаюсь понять файл модуля systemd с зависимостью от сети, но с трудом нахожу примеры.
 – 
GFL
26 Дек 2019 в 23:52
1
1) какой у тебя дистрибутив? 2) ping dk работает в терминале?
 – 
Gilles Quenot
27 Дек 2019 в 02:30
1
Потребуется пропинговать IP-адрес, например 8.8.8.8, чтобы он не терпел неудачу на раннем этапе разрешения имени.
 – 
Bernhard M.
27 Дек 2019 в 04:26
1
Просто продолжайте пробовать wget. @reboot until wget -a /log/here -O /save/here https://domain.tld/file.ext; do sleep 2; done
 – 
Jasen
27 Дек 2019 в 07:53
Это Raspbian
 – 
GFL
31 Дек 2019 в 09:26

Я обнаружил, что самый надежный способ использовать wget при загрузке — это создать задание в /etc/rc.local. Кроме того, поскольку компьютер, который я использовал, не имеет внутренней батареи и вместо этого полагается на протокол сетевого времени для установки часов при загрузке, я обнаружил, что мне также нужно указать --no-check-certificate или не использовать https:/ / чтобы предотвратить сбой команды из-за таких проблем, как сертификат SSL, который еще не действителен.

0
GFL 31 Дек 2019 в 09:30