我已经使用blockhosts一段时间了,到目前为止它一直很棒。我最近将Ubuntu更新为10.10,我开始看到一些不稳定的行为。经过仔细检查,我注意到/var/log/blockhosts.log中有一堆错误:
ERROR: failed to parse date for ip 188.17.155.25, using now value:
time data '2010-11-01 03:04:02 AMT' does not match format '%Y-%m-%d %H:%M:%S %Z'
时区出现为“AMT”(亚美尼亚时间)的事实很奇怪。我的时区设置为:
$ cat /etc/timezone
Europe/Amsterdam
我查看了处理和检查日期的blockhosts.py
代码,我看到它正在被处理为time
个对象。
以下代码显示了问题:
import time
now = time.time()
str1 = time.strftime('%Y-%m-%d %H:%M:%S %Z', time.localtime())
str2 = time.strftime('%Y-%m-%d %H:%M:%S %Z')
print str1
print str2
输出如下:
2010-12-06 16:18:47 AMT
2010-12-06 16:18:47 CET
time.tzname
的值是('CET', 'CEST')
,所以我不确定“AMT”来自哪里......
任何帮助将不胜感激!
更新
根据评论中的建议:
/etc/localtime
不是/usr/share/zoneinfo/Europe/Amsterdam
的符号链接,但它们是同一个文件: $ ls -l /etc/localtime
-rw-r--r-- 1 root root 2917 2010-11-18 09:35 /etc/localtime
$ ls -l /usr/share/zoneinfo/Europe/Amsterdam
-rw-r--r-- 1 root root 2917 2010-11-11 09:35 /usr/share/zoneinfo/Europe/Amsterdam
$ diff /etc/localtime /usr/share/zoneinfo/Europe/Amsterdam
$ echo $TZ
$ env | grep TZ
2010-12-07 11:12:09 AMT
2010-12-07 11:12:09 CET
答案 0 :(得分:0)
时间模块没有比调用unix C API调用做多少,所以我首先会怀疑你的配置。
那就是说,time.strftime('%Y-%m-%d %H:%M:%S %Z', time.localtime())
和time.strftime('%Y-%m-%d %H:%M:%S %Z')
应该是等价的,因为time.localtime()是参数的默认值,所以这些不同之处超出了我的范围。