【问题标题】:How to loop ip range in cidr format in a text file如何在文本文件中以cidr格式循环ip范围
【发布时间】:2015-02-26 05:45:49
【问题描述】:

我偶然发现了这个脚本http://paste.ubuntu.com/10416480/,它采用 cidr 格式的单个 iprange 并寻找打开的 dns。这很酷。我想知道如何修改它以在文本文件中采用 ipranges。这样当它完成时一个 iprange 它以快速的方式转到下一个,就像程序一次只输入一个 iprange 一样,谢谢

【问题讨论】:

  • 请包含您需要帮助的代码部分,并解释它的作用、您所做的更改以及您如何失败。
  • 整个代码在这里paste.ubuntu.com/10416480。我希望代码从文本文件中获取范围。目前代码一次占用一个范围,必须手动输入。这非常耗时
  • 我认为您的问题并不清楚,但您应该查看help 部分,尤其是stackoverflow.com/help/how-to-ask
  • 问题很明确。该程序是一个 perl 脚本,它采用单个 iprange 并扫描打开的解析器。现在我想知道如何修改脚本以从文本文件中获取 iprange,这样当它完成一个 iprange 时,它​​会移动到列表中的下一个.我觉得我在重复,但为了清楚起见没关系。有人可以帮忙吗?

标签: bash perl loops


【解决方案1】:

如果我理解正确,您的目标是针对大量 IP 范围运行脚本。基于这个假设,有两种方法可以解决这个问题——你可以修改脚本,或者在它上面写一个包装器来做你想做的事。我建议编写一个包含现有 Perl 代码的 shell 脚本:

#!/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"

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

【讨论】:

  • 感谢回复。所以在我的命令终端上我应该写 ./dostuff.sh textwithipranges.txt 。当我这样做时,我收到错误)看起来不是有效的 IP 范围
  • 要调试它,请尝试运行bash -x dostuff.sh textwithipranges.txt。它将向您展示 bash 在每个步骤中所做的事情,因此您可以验证 Perl 脚本是否传递了不正确的 IP 范围。
  • 好的。我认为这是我的错。文本文件现在的 IP 范围格式正确,并且运行良好。感谢您的帮助
  • 当我运行 bash 脚本时,一切都很好,例如我得到了输出:!!!从 10.2.3.40 得到答案——可能的开放解析器! .所以我问我怎样才能使用 grep 或 awk 打印 IP 地址
  • 尝试使用 grep -o 和正则表达式来检测 IP 地址
猜你喜欢
  • 2023-04-05
  • 2016-04-13
  • 2012-11-10
  • 1970-01-01
  • 2017-10-24
  • 2020-11-10
  • 2012-11-04
  • 2019-01-01
  • 2018-04-12
相关资源
最近更新 更多