如何保存ipv4地址,然后将其用于查询API?

时间:2019-03-10 07:05:43

标签: python shell

这是问题所在。我正在从服务器(centos)中读取访问日志,并使用here中的Sarel Botha的ipv4地址提取grep命令。

由于我的服务器在nohup中运行Java以提供连接,并且所有客户端的ipv4地址均写入nohup.out。

结合使用,如果我跑步

tail -f nohup.out|grep -E -o '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'

然后我会在nohup.out上的新记录之后有一个IP地址列表,例如

111.111.111.111
222.222.222.222

,每个ipv4地址将在一行中输出。

现在,我需要从nohup.out获取每个“ greped”的ipv4地址,并将其发送到n ip地理位置查询API,查询所需的格式为

GET http://example.com/api/json/111.111.111.111

curl http://example.com/api/json/111.111.111.111 

任何人都可以告诉我如何保存ipv4地址,然后将其用于查询,并使查询输出遵循我的tail -f命令吗?

2 个答案:

答案 0 :(得分:0)

您可以将grepped的输出通过管道传递给curl命令,如下所示:

tail -f nohup.out | grep --line-buffered -E -o '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' | while read EVERY_IP
do
    curl "http://example.com/api/json/${EVERY_IP}";
done 

注意:不要忘记在--line-buffered命令中添加grep选项

答案 1 :(得分:0)

awk '{print "URL"$0}' 

您可以获得类似于URL + ip的字符串 但我不知道如何使用shell查询。

您可以看到以下问题:
How to implement a pythonic equivalent of tail -F?