<提問> 如何使用Shell實現NTP時間伺服器指定同步(懇請兄弟姊妹們幫忙) [論壇 - Ubuntu 程式設計]
正在瀏覽:
1 名遊客
<提問> 如何使用Shell實現NTP時間伺服器指定同步(懇請兄弟姊妹們幫忙) |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員一級
![]() ![]() 註冊日期:
2019/1/14 18:21 所屬群組:
已註冊使用者 等級: 1
HP : 0 / 2
![]() |
大家好, 我想用Shell做.Sh檔 , 但對於語法不熟, 特地上來論壇 尋求各位兄弟姐妹的幫忙~
***系統版本:ubuntu 18.04 ***需求情境: 用戶透過點.sh檔 , 執行以下這兩行指令, 並且腳本已預先輸入Sudo密碼 , 讓指令在運作時不會跳出要求輸入密碼字樣. sudo service ntp stop sudo ntpdate "118.163.81.63" [url]https://s2.ax1x.com/2019/01/14/FxoB5V.png[/url] 請問以上需求 , 要使用具體何種語法來實現呢 ? 謝謝各位幫忙 ^ ^
2019/1/14 19:00
|
||||||||||
![]() |
回覆: <提問> 如何使用Shell實現NTP時間伺服器指定同步(懇請兄弟姊妹們幫忙) |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員三級
![]() ![]() 註冊日期:
2009/1/10 10:33 所屬群組:
已註冊使用者 等級: 14
HP : 0 / 340
![]() |
因為ubuntu 安裝時系統自動加上
timedatectl / timesyncd 取代 ntpdate / ntp 功能,達到系統時間網路同步。 不了解為何 Momo78678 網友還有需要使用 ntpdate 程式?
2019/1/14 21:53
|
||||||||||
![]() |
回覆: <提問> 如何使用Shell實現NTP時間伺服器指定同步(懇請兄弟姊妹們幫忙) |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員一級
![]() ![]() 註冊日期:
2019/1/14 18:21 所屬群組:
已註冊使用者 等級: 1
HP : 0 / 2
![]() |
是這樣的 , 由於在"無"網際網路的場景中需要讓客人指定區網(Local LAN)上的NTP伺服器, 並且客人不會使用指令 , 只能讓客人在GUI的環境下實現此功能.
目前ubuntu 18.04版本中的GUI工具只能指定時區與自動同步, 無法指定同步的NTP伺服器為特定區網NTP伺服器. #!/bin/sh echo "password" | sudo -S service ntp stop echo "password" | sudo -S ntpdate "118.163.81.63" 所以我做了一個Script腳本包成.sh執行檔如上 , 但是讓用戶透過點擊.sh檔兩下執行後 , 卻無反應, 系統時間不會進行更新. 交叉測試 ,把腳本中的指令直接放在終端機中執行 卻是馬上生效,系統時間馬上更新. 請問我要如何做? 可以實現 : 讓用戶透過點擊.sh檔兩下執行後 , 系統時間馬上與指定的NTP伺服器進行更新呢? (或是透過安裝GUI工具實現此功能也行) 懇請兄弟姊妹們幫忙 , 謝謝 ^ ^
2019/1/15 13:55
|
||||||||||
![]() |
回覆: <提問> 如何使用Shell實現NTP時間伺服器指定同步(懇請兄弟姊妹們幫忙) |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 901
![]() |
第一種方式是直接點「shell script」然後可以直接執行,
要注意的地方是「shell script」執行權限, 然後要取決您的「File Manager」或「Desktop」是否有支援「點選執行shell script」的機制。 ================================================================================ 第二種方式,則是撰寫「Desktop Entry」, 一樣可以把您要執行指令,寫成「shell script」,然後放到「/usr/local/bin/」這個資料夾, 一樣要注意的地方是「shell script」執行權限。 接著撰寫「Desktop Entry」,然後其中「Exec=」後面要寫剛剛產生的「shell script」。 當然指令也可以直接寫在「Exec=」後面,就不需要剛剛的「shell script」。 ================================================================================ 關於這個議題相關的討論 * #6 回覆: 如何在桌面製作執行檔 * #1 關於「m3u」和「mpv」和「smplayer」的操作使用 關於「Desktop Entry」的一些討論案例紀錄在「[索引] 泛Ubuntu 安裝調校」。 ================================================================================ 先給您一個簡單的範例,是關於上面第二種方式的產生步驟。 ## 產生「sync-ntp.sh」,並且安裝到「/usr/local/bin/」這個資料夾 cat > sync-ntp.sh << EOF #!/usr/bin/env bash mpv http://www.youtube.com/watch?v=Lqe3MuCyh9o EOF sudo install -m 755 sync-ntp.sh /usr/local/bin/ ## 產生「~/Desktop/sync-ntp.desktop」 cat > ~/Desktop/sync-ntp.desktop << EOF [Desktop Entry] Type=Application Name=同步網路時間 GenericName=Sync-NTP Exec=sync-ntp.sh Icon=applications-utilities Categories=System;Utility; Keywords=ntp;sync; EOF ## 設定「~/Desktop/sync-ntp.desktop」擁有者執行權限 chmod u+x ~/Desktop/sync-ntp.desktop # https://developer.gnome.org/integration-guide/stable/desktop-files.html.en 執行完上面的步驟,就可以在桌面找到一個「圖示」,名稱為「同步網路時間」, 點選它,就會執行「/usr/local/bin/sync-ntp.sh」, 以上只是範例,「sync-ntp.sh」並不是執行您的原本的指令, 所以您可以把您的指令,寫在「/usr/local/bin/sync-ntp.sh」。 而「Desktop Entry」不一定要放在桌面,也可以放在其他位置,上面只是舉例, 請參考「#1 關於「m3u」和「mpv」和「smplayer」的操作使用」。 ================================================================================ 上面的操作步驟,產生的「/usr/local/bin/sync-ntp.sh」的檔案內容如下 #!/usr/bin/env bash mpv http://www.youtube.com/watch?v=Lqe3MuCyh9o ================================================================================ 上面的操作步驟,產生的「~/Desktop/sync-ntp.desktop」的檔案內容如下 [Desktop Entry] Type=Application Name=同步網路時間 GenericName=Sync-NTP Exec=sync-ntp.sh Icon=applications-utilities Categories=System;Utility; Keywords=ntp;sync; ================================================================================ 以上提供參考,報告完畢 ![]()
2019/1/15 16:07
|
||||||||||
![]() |
回覆: <提問> 如何使用Shell實現NTP時間伺服器指定同步(懇請兄弟姊妹們幫忙) |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 901
![]() |
swwei 寫到: 剛剛參考「#2」提到的關鍵字「timedatectl」和「timesyncd」。 做了一些探索,簡易紀錄如下 ================================================================================ 以下測試環境是「Ubuntu 18.04」 ================================================================================ 執行
顯示
執行
顯示
可以找到相關的「Manpage」如下
================================================================================ 執行
顯示
執行
顯示
可以找到相關的「Manpage」如下
================================================================================ 根據「$ man timesyncd.conf」 可以找到一個設定檔「/etc/systemd/timesyncd.conf」 執行下面指令,觀看「/etc/systemd/timesyncd.conf」這個檔案的內容
顯示 # This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # Entries in this file show the compile time defaults. # You can change settings by editing this file. # Defaults can be restored by simply deleting this file. # # See timesyncd.conf(5) for details. [Time] #NTP= #FallbackNTP=ntp.ubuntu.com #RootDistanceMaxSec=5 #PollIntervalMinSec=32 #PollIntervalMaxSec=2048 發現到有兩個參數「NTP」和「FallbackNTP」,可以設定要連線同步的「Server」。 ================================================================================ 可以直接修改「/etc/systemd/timesyncd.conf」這個檔案的內容,來設定。 例如設定「NTP=clock.stdtime.gov.tw」。 不過以下範例,先不修改「/etc/systemd/timesyncd.conf」這個檔案的內容。 ================================================================================ 執行下面指令,先產生「/etc/systemd/timesyncd.conf.d」這個資料夾。
================================================================================ 接著執行下面指令,產生一個檔案「/etc/systemd/timesyncd.conf.d/myntp.conf」
接著執行下面指令,觀看「/etc/systemd/timesyncd.conf.d/myntp.conf」這個檔案的內容
顯示 [Time] NTP=clock.stdtime.gov.tw ================================================================================ 接著執行下面兩個指令,就會執行同步的動作。
================================================================================ 可以執行下面指令,來確認「執行同步的動作」,是否有被執行。(參考下面藍色字)
顯示 ● systemd-timesyncd.service - Network Time Synchronization Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2019-01-16 00:44:29 CST; 4s ago Docs: man:systemd-timesyncd.service(8) Main PID: 4831 (systemd-timesyn) Status: "Synchronized to time server 211.22.103.158:123 (clock.stdtime.gov.tw)." Tasks: 2 (limit: 4915) CGroup: /system.slice/systemd-timesyncd.service └─4831 /lib/systemd/systemd-timesyncd Jan 16 00:44:29 work systemd[1]: Starting Network Time Synchronization... Jan 16 00:44:29 work systemd[1]: Started Network Time Synchronization. Jan 16 00:44:29 work systemd-timesyncd[4831]: Synchronized to time server 211.22.103.158:123 (clock.stdtime.gov.tw). 上面可以看到「time server」已經改成「211.22.103.158:123 (clock.stdtime.gov.tw)」。 ================================================================================ 另外在測試前,也可以先修改系統的時間,然後再來「執行同步的動作」,來觀察是否真的有同步。 執行
注意: 原本狀態若是「true」,若沒有先執行「timedatectl set-ntp false」, 就會顯示下面的提示訊息
================================================================================ * http://www.stdtime.gov.tw/chinese/bulletin/NTP%20promo.txt * https://developers.google.com/time/ * https://www.ntppool.org/ 閱讀「$ man timesyncd.conf」, 也可以設定多個「Server」,用「空白」隔開, 例如「NTP=time.google.com clock.stdtime.gov.tw」。 舉例,執行
================================================================================ 回到「#4」提到的範例,就可以改成 ## 產生「sync-ntp.sh」,並且安裝到「/usr/local/bin/」這個資料夾 cat > sync-ntp.sh << EOF #!/usr/bin/env bash timedatectl set-ntp false timedatectl set-ntp true EOF sudo install -m 755 sync-ntp.sh /usr/local/bin/ ## 產生「~/Desktop/sync-ntp.desktop」 cat > ~/Desktop/sync-ntp.desktop << EOF [Desktop Entry] Type=Application Name=同步網路時間 GenericName=Sync-NTP Exec=sync-ntp.sh Icon=applications-utilities Categories=System;Utility; Keywords=ntp;sync; EOF ## 設定「~/Desktop/sync-ntp.desktop」擁有者執行權限 chmod u+x ~/Desktop/sync-ntp.desktop # https://developer.gnome.org/integration-guide/stable/desktop-files.html.en ================================================================================ 後記: 後來找資料的時候,又找到之前參與的一篇討論「關於debian 8 時間伺服器設定的問題」。 ================================================================================ 暫記: * https://www.freedesktop.org/wiki/Software/systemd/timedated/
### SourcePackage: systemd * systemd-237/src/timedate/timedated.c * systemd-237/src/timedate/timedatectl.c ### SourcePackage: gnome-control-center * gnome-control-center-3.28.2/panels/datetime/cc-datetime-panel.c ================================================================================ 以上提供參考,報告完畢 ![]()
2019/1/16 1:14
|
||||||||||
![]() |
回覆: <提問> 如何使用Shell實現NTP時間伺服器指定同步(懇請兄弟姊妹們幫忙) |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員一級
![]() ![]() 註冊日期:
2019/1/14 18:21 所屬群組:
已註冊使用者 等級: 1
HP : 0 / 2
![]() |
收到~
感謝S大的幫忙 , 趕緊來試試 ^ ^
2019/1/16 15:38
|
||||||||||
![]() |
回覆: <提問> 如何使用Shell實現NTP時間伺服器指定同步(懇請兄弟姊妹們幫忙) |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
版主
![]() ![]() 註冊日期:
2008/7/14 0:03 來自 螢幕的另一端
所屬群組:
網站管理員 已註冊使用者 討論區管理群 等級: 33
HP : 0 / 808
![]() |
首先你將 sudo 設定成免問密碼的你就會省事多了,google 一下 sudo 的用法就有了。
其次,你可以使用 zenity 這個套件,使你即使用 shell script 也可以有圖型介面 你可以參考我的筆記 http://note.zn2.us/zenity.htm
2019/1/22 11:42
|
||||||||||
![]() |
您可以查看帖子.
您不可發帖.
您不可回覆.
您不可編輯自己的帖子.
您不可刪除自己的帖子.
您不可發起投票調查.
您不可在投票調查中投票.
您不可上傳附件.
您不可不經審核直接發帖.