Bash

如何在不使用 ping 測試的情況下將 ntp 伺服器測試為響應的真實伺服器

  • May 25, 2022

我們有配置chrony.conf

腳本檢查 ping 是否正常ntp1ntp2(ntp 伺服器)

然後腳本將 ntp 伺服器插入到/etc/chrony.conf(僅當 ping 成功時)

來自 bash 腳本的範例:

ping -c 1 ntp1

if [[ $? -eq 0 ]];then
echo "server ntp1 iburst" >> /etc/chrony.conf
else
echo "sorry so much but no ping to ntp1 server , /etc/chrony.conf will not configured "
exit 1
fi


ping -c 1 ntp2
if [[ $? -eq 0 ]];then
echo "server ntp2 iburst" >> /etc/chrony.conf
else
echo "sorry so much but no ping to ntp2 server , /etc/chrony.conf will not configured "
exit 1
fi

問題是有時使用者決定禁用pingicmp

那麼在那種情況下,我們檢查 ping 的場景是不相關的,我們不能將這些行添加到/etc/chrony.conf

所以我們想知道如何測試和伺服器以添加ntp1ntp1和chrony配置ntp2``ntp2

例如,如果ntp1似乎ntp2不是作為 ntp 伺服器,那麼我們不會將它們添加到 chrony 配置中

使用工具檢查 NTP 伺服器ntpdate

像這樣的東西:

OP=$(ntpdate -q ntp1)

如果 OP 包含正確的日期數據,則 ntp1 正在工作。否則嘗試ntp2。


參考:https
://www.tunnelsup.com/how-to-test-an-ntp-server-using-ntpdate/ 輸出:

$ ntpdate -q pool.ntp.org  
server 64.71.128.26, stratum 2, offset 1.552116, delay 0.06792  
server 104.236.236.188, stratum 2, offset 1.556884, delay 0.11574  
server 108.59.2.24, stratum 2, offset 1.569006, delay 0.11952  
server 209.114.111.1, stratum 2, offset 1.542965, delay 0.11389  
19 Apr 21:30:06 ntpdate[32062]: step time server 64.71.128.26 offset 1.552116 sec

關於您的腳本的快速評論:

當 ntp1 沒有響應時,您應該記錄它但不要退出,而是應該繼續使用 ntp2。

只有當兩者都沒有響應時,您可能不想繼續。

引用自:https://unix.stackexchange.com/questions/703679