linux – 在python中获取变量中的ntpdate偏移值

我想检查偏移时间是否大于0.5秒并做一些动作.
我正在运行命令ntpdate -q< Server ip address>

有人能告诉我如何捕获变量中的偏移值,以便我可以执行进一步的操作?

解决方法:

import subprocess

output = subprocess.check_output('ntpdate -q 3.us.pool.ntp.org | head -1 | cut -d " " -f 6 | sed "s/.$//"', shell=True)

您可以将“3.us.pool.ntp.org”服务器名称更改为您选择的NTP服务器.

使用此方法,输出变量将仅包含ntpdate命令输出的第一行中指定的偏移量,您可以使用该数字后执行所需的操作.

if output > X:
    do something...

说明

你已经知道ntpdate的作用(清楚),所以你会知道它返回的输出有很多无用的信息,你正在尝试做什么.

> Subprocess允许您从python脚本中运行bash命令
> check_output与锡上的内容完全相同,在这种情况下,将其存储在输出变量中.
>如果像我在我的例子中那样使用一个池,那么head -1只需要取ntpdate输出的顶行(各种结果不应该变化很大,所以顶部应该没问题).
> cut将线条视为由空格字符分隔的字段.它排序并挑出第6个字段,即偏移值.
> sed从该值中删除最后一个字符,这是一个逗号,并且会破坏您为实际使用该值而进行的任何尝试.
> shell = True调用shell来执行契约.

~~~~~~~~~编辑~~~~~~~~~~~

我也没有代表发表评论,哈.你能告诉我服务器运行的是哪个版本的python @Iram Khan吗?

python -V

我怀疑它是一个版本< 2.7就像添加check_output功能时那样.在这种情况下,您可能需要将上述内容更改为:

import subprocess

cmd = "ntpdate -q 3.us.pool.ntp.org | head -1 | cut -d ' ' -f 6 | sed 's/.$//'"

ps = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)

output = ps.communicate()[0]

如果check_output不起作用,这应该这样做.

上一篇:从Linux同步到AWS S3 Bucket时保留所有者和文件权限信息


下一篇:使用Linux软件在Thunberbird和Android之间同步日历和联系人