ntpdate 110.75.186.247 >> /var/log/ntpdate.log || ntpdate 110.75.186.247 >> /var/log/ntpdate.log || ntpdate 203.123.48.218 >> /var/log/ntpdate.log|| ntpdate 103.16.199.21 >> /var/log/ntpdate.log
Я пробовал два метода, ни один из них не удалось.
ntpdate 110.75.186.247 || ntpdate 110.75.186.247 || ntpdate 203.123.48.218 || ntpdate 103.16.199.21 >> /var/log/ntpdate.log
ntpdate 110.75.186.247 || ntpdate 110.75.186.247 || ntpdate 203.123.48.218 || ntpdate 103.16.199.21 &&>> /var/log/ntpdate.log
Как упростить команду?
Проблема с конструкцией
ntpdate 192.0.2.1 || ntpdate 203.0.113.2 >> /var/log/ntpdate.log
заключается в том, что >> применяется только к последней команде. Вы можете обратиться к этому, используя скобки вокруг таких команд:
( ntpdate 192.0.2.1 || ntpdate 203.0.113.2 ) >> /var/log/ntpdate.log
Вы можете думать, что набрав ntpdate несколько раз, является избыточным, и это должно быть возможно устранить. Вы можете исключить повторение ntpdate, используя цикл. Хотя в вашем конкретном случае команда настолько проста, что использование цикла приводит к большей сложности, чем устраняет:
for IP in 192.0.2.1 203.0.113.2
do
ntpdate "$IP" && break
done >> /var/log/ntpdate.log
В качестве альтернативы может быть, что ваша исходная проблема лучше решена путем вызова ntpdate только один раз с несколькими адресами сервера:
ntpdate 192.0.2.1 203.0.113.2 >> /var/log/ntpdate.log