<提问> 如何使用Shell实现NTP时间伺服器指定同步
大家好, 我想用Shell做.Sh檔 , 但对于语法不熟, 特地上来论坛 寻求各位兄弟姐妹的帮忙~
***系统版本:ubuntu 18.04
***需求情境: 用户透过点.sh檔 , 执行以下这两行指令, 并且脚本已预先输入Sudo密码 , 让指令在运作时不会跳出要求输入密码字样.
sudo service ntp stop
sudo ntpdate "118.163.81.63"
https://s2.ax1x.com/2019/01/14/FxoB5V.png
请问以上需求 , 要使用具体何种语法来实现呢 ? 谢谢各位帮忙 ^ ^
<提问> 如何使用Shell实现NTP时间伺服器指定同步
-
- 帖子: 3
- 注册时间: 2019-01-14 18:26
- astolia
- 论坛版主
- 帖子: 6386
- 注册时间: 2008-09-18 13:11
Re: <提问> 如何使用Shell实现NTP时间伺服器指定同步
执行脚本这样就行了
sudo免密码有几种做法。如果不在乎在脚本文件中暴露密码的话,把上面的sudo改成
否则可以写个sudo的配置文件,让它在执行上面的命令时不需要问密码
上面就是对当前用户免密码
代码: 全选
#!/bin/sh
sudo service ntp stop
sudo ntpdate "118.163.81.63"
代码: 全选
echo "密码" | sudo -S service ntp stop
echo "密码" | sudo -S ntpdate "118.163.81.63"
代码: 全选
echo "Cmnd_Alias STOP_NTP=/usr/sbin/service ntp stop
$USER ALL=(ALL) NOPASSWD: STOP_NTP, /usr/sbin/ntpdate" | sudo tee /etc/sudoers.d/ntp
-
- 帖子: 3
- 注册时间: 2019-01-14 18:26
Re: <提问> 如何使用Shell实现NTP时间伺服器指定同步
感谢A大您的回覆,由于在“无”网际网路的场景中需要让客人指定本地局域网上的NTP伺服器,并且客人不会使用终端机指令,只能让客人在GUI的环境下实现此功能。
目前ubuntu 18.04版本中的GUI工具只能指定时区与自动同步,无法指定同步的NTP伺服器为 区网中特定的NTP伺服器。
#!/ bin / sh的
echo“密码”| sudo -S服务ntp停止
echo“密码”| sudo -S ntpdate“118.163.81.63”
我按照A大的建议做了一个脚本脚本包成.sh执行档如上,但是让用户透过点击.sh档两下执行后,却无反应,系统时间不会进行更新。
交叉测试,把脚本中的指令直接放在终端机中执行却是马上生效,系统时间马上更新。
请问我要如何做? 可以实现:让用户透过点击.sh档两下执行后,系统时间马上与指定的NTP伺服器进行更新呢? (或是透过GUI来实现此功能也行)
恳请A大 与兄弟姊妹们帮忙,谢谢^ ^
目前ubuntu 18.04版本中的GUI工具只能指定时区与自动同步,无法指定同步的NTP伺服器为 区网中特定的NTP伺服器。
#!/ bin / sh的
echo“密码”| sudo -S服务ntp停止
echo“密码”| sudo -S ntpdate“118.163.81.63”
我按照A大的建议做了一个脚本脚本包成.sh执行档如上,但是让用户透过点击.sh档两下执行后,却无反应,系统时间不会进行更新。
交叉测试,把脚本中的指令直接放在终端机中执行却是马上生效,系统时间马上更新。
请问我要如何做? 可以实现:让用户透过点击.sh档两下执行后,系统时间马上与指定的NTP伺服器进行更新呢? (或是透过GUI来实现此功能也行)
恳请A大 与兄弟姊妹们帮忙,谢谢^ ^
- astolia
- 论坛版主
- 帖子: 6386
- 注册时间: 2008-09-18 13:11
Re: <提问> 如何使用Shell实现NTP时间伺服器指定同步
可以通过修改系统配置文件来指定ntp伺服器。默认情况下时间同步是通过systemd的timesyncd,是在/etc/systemd/timesyncd.conf里设置[Time]中的NTP=项。
ubuntu 18.04 desktop默认并没有安装ntp和ntpdate,看你的描述中是安装了的,我不清楚你那边的系统上还有没有做其他可能会影响到timesyncd运作的改动,比如执行了timedatectl set-ntp false来禁止timesyncd的时间同步功能。
由于默认查询的ntp伺服器是ntp.ubuntu.com,所以还可以通过将ntp.ubuntu.com域名解析到指定ip地址的方式来实现查询指定伺服器。比如修改/etc/hosts文件。如果能控制局域网中的dns伺服器,直接在dns伺服器上设置静态解析ntp.ubuntu.com到指定ip,都不需要客人做任何操作。
这个要查一下具体是什么问题,你改成这样再点击运行,然后看看/tmp/a.txt和/tmp/b.txt中是什么内容
代码: 全选
echo "密码" | sudo -S ntpdate "118.163.81.63" >/tmp/a.txt 2>/tmp/b.txt
-
- 帖子: 3
- 注册时间: 2019-01-14 18:26
Re: <提问> 如何使用Shell实现NTP时间伺服器指定同步
收到〜
感谢A大的帮忙,赶紧来试试^ ^
感谢A大的帮忙,赶紧来试试^ ^