【发布时间】:2015-08-03 12:37:53
【问题描述】:
为什么 sys.stdin.read() 不从 tail -f 读取管道输入?
#!/usr/bin/env python
import sys
from geoip import geolite2
def iplookup(srcip):
for ip in srcip.split("\n"):
try:
print(geolite2.lookup(ip))
except:
pass
source = sys.stdin.read()
iplookup(source)
tail -f /var/log/bleh.log | grep -oE '((1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5])' | python mygeoip.py
【问题讨论】:
-
1.你确定有输出要读取吗,以及 2.
sys.stdin.read()blocks 直到没有更多数据要读取,我怀疑在这种情况下永远不会出现这种情况。
标签: python linux bash stdin geoip