0

这就是问题所在。我正在阅读我的服务器(centos)访问日志并使用 Sarel Botha 的 ipv4 address extract grep 命令 from here

由于我的服务器在 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 中获取每个 ipv4 地址“greped”并将其发送到 ip geolocation query API,查询所需的格式是

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

或者

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

谁能告诉我如何保存 ipv4 地址,然后将其用于查询,并在我的 tail -f 命令之后获得查询输出?

4

2 回答 2

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

于 2019-03-10T07:47:49.400 回答
0
awk '{print "URL"$0}' 

您可以获取 URL+ip 之类的字符串,但我不知道如何使用 shell 进行查询。

你可以看到这个问题:
How to implement a pythonic equivalent of tail -F?

于 2019-03-10T08:30:39.710 回答