这是关于 2013 年的一些 Ubuntu 论坛用户和 askubuntu 用户与我一起编写的一个旧脚本。该脚本是:
#!/bin/bash
awk '{
for (i = 1; i <= NF; i++)
if ($i ~ /^SRC=/)
print substr($i, 5)
}' /var/log/syslog | sort -u | while read ip;
do
printf ' INVALID STATE ' && printf ' =.|=.|=.|= %n =.|=.|=.|=\n ' | "$ip";
whois "$ip" >> log-002.txt;
done
我是否应该在变量 ip 中放置一个矩阵来生成可扫描的 ipv6 地址?或者这是由于 whois 的新版本?对此脚本的更正将获得奖励。
显然,提供商 (unitymedia) 安装了新的防火墙,导致 whois 查询无法进行。我应该等待 whois 更新吗?或者这个问题可以解决吗?
该脚本的运行结果如下:
INVALID STATE ./pitbull-001.sh: Zeile 8: 2a02:0908:fd60:9200:b196:36be:5aa1:b60b: command not found INVALID STATE ./pitbull-001.sh: Zeile 8: 2a02:0908:fd60:9200:ba70:f4ff:fef3:2df3: command not found INVALID STATE ./pitbull-001.sh: Zeile 8: fe80:0000:0000:0000:0a95:2aff:fe7a:bca7: command not found INVALID STATE ./pitbull-001.sh: Zeile 8: fe80:0000:0000:0000:ba70:f4ff:fef3:2df3: command not found
但是当在命令行中明确给出 ipv6 地址时,whois 确实有效:
查找 2a02:0908:fd60:9200:b196:36be:5aa1:b60b:
看起来好像 whois 数据库部分受损了,或者好像有人禁止查询?
不同之处在于,在主页上进行查询时http://whois.net在查询字段中输入 ip 号码后,结果与在您的机器上本地进行 whois 查询时的结果不同。
如果此帖子的文本不合适,请将其调整为正确的英语。我的语法与您的语法不同。:-)
答案1
我不太确定您期望什么输出(如果清楚了,我会更新这个答案),但错误消息是由于第 8 行的输出被管道传输到而导致的printf
,"$ip"
该输出被解释为命令。
以下脚本不会出现错误,但我不确定这是否是您想要的输出:
#!/bin/bash
awk '{
for (i = 1; i <= NF; i++)
if ($i ~ /^SRC=/)
print substr($i, 5)
}' /var/log/syslog | sort -u | while read ip;
do
printf ' INVALID STATE ' && echo "$ip";
whois "$ip" >> log-002.txt;
done
输出将附加到log-002.txt
当前目录中的文件(就像它已经包含在原始脚本中一样)。