Bash 如何在文本文件中循环cidr格式的ip范围

Bash 如何在文本文件中循环cidr格式的ip范围,bash,perl,loops,Bash,Perl,Loops,我只是偶然发现了这个脚本,它采用cidr格式的单个iprange并查找开放的dns。这很酷。我想知道如何修改它以在文本文件中采用iprange。这样,当它使用一个iprange完成时,它会以快速的方式转到下一个iprange,正如程序一次只能输入一个IP范围一样,如果我理解正确,您的目标是为大量IP范围运行脚本。基于这个假设,有两种方法可以解决这个问题——要么修改脚本,要么在脚本上编写一个包装器来完成您想要的任务。我建议编写一个外壳脚本,它将覆盖现有的Perl代码: #!/bin/bash #

我只是偶然发现了这个脚本,它采用cidr格式的单个iprange并查找开放的dns。这很酷。我想知道如何修改它以在文本文件中采用iprange。这样,当它使用一个iprange完成时,它会以快速的方式转到下一个iprange,正如程序一次只能输入一个IP范围一样,如果我理解正确,您的目标是为大量IP范围运行脚本。基于这个假设,有两种方法可以解决这个问题——要么修改脚本,要么在脚本上编写一个包装器来完成您想要的任务。我建议编写一个外壳脚本,它将覆盖现有的Perl代码:

#!/bin/bash

# the filename is passed as the first argument. It has one IP range per line
infile=$1

while read iprange
do
    # dostuff.pl should be replaced by the perl script
    dostuff.pl "$iprange"
done < "$infile"
#/bin/bash
#文件名作为第一个参数传递。它每行有一个IP范围
填充=1美元
读取iprange时
做
#应该用perl脚本替换dostuff.pl
dostuff.pl“$iprange”
完成<“$infle”

您可以将上述文本保存在类似
dostuff.sh
的文件中,并直接使用它而不是Perl脚本。

请包含您需要帮助的部分代码,并解释它的作用、更改的内容以及如何失败。完整的代码在这里。我希望代码从文本文件中获取范围。目前,代码一次只取一个范围,必须手动输入。这正是时间的消耗。我不认为你的问题不清楚,但你应该回顾这一部分,特别是问题清楚。该程序是一个perl脚本,它采用单个iprange并扫描打开的解析程序。现在我想知道如何修改该脚本,使其从文本文件中采用iprange,以便在使用一个iprange时,移动到列表中的下一个iprange。我觉得我在重复,但为了清晰起见,可以这样做。有人能帮忙吗?谢谢你的回复。所以在我的命令终端上,我应该写。/dostuff.sh textwithipranges.txt。当我这样做时,我得到了错误)看起来不是有效的IP范围要调试它,请尝试运行
bash-x dostuff.sh textwithipranges.txt
。它将向您展示bash在每个步骤中所做的工作,这样您就可以验证Perl脚本是否传递了错误的IP范围。好的。我想这是我的错。现在文本文件的ip范围格式正确,运行良好。感谢您的帮助,当我运行bash脚本时,一切都很好,我得到了输出,例如:!!!从10.2.3.40中获得答案-可能的开放式解析器。因此,我问我如何使用grep或awkTry打印ip地址,使用
grep-o
和regex来检测ip地址