好吧,所以我的任务是审计在办公室使用我们的IP,因为我们的工作量很低。所以我正在尝试编写一个基本脚本,其中列出了我需要验证的IP列表,并针对另一个验证IP使用的脚本进行调整。我让它在Bash中工作,但我想使用Python,以便我可以按自己喜欢的方式进行一些调整。
所以我有一个名为" iprange"的文件。我有一个perl文件,一个前同事制作,不再在这里工作,它需要一个IP并检查它,验证正在使用它,然后输出回来。这是"工作的例子"对我说巴什。
cat iprange | xargs -I % checkIP.pl -s % > ipresults.txt 2>&1
问题是,这给了我一个看起来像这样的输出。
"This IP is free"
"This IP is free"
"This IP is used by XPNSE43525"
有两个问题。 1)有成千上万的IP,所以我需要找到一种方法来使它看起来更像这样。
10.4.8.5
"This IP is free"
OR
checkIP.pl -s 10.4.8.5
"This IP is free"
由于bash似乎不太可能,因此我希望用Python来解决这个问题。但是不知道如何让python启动脚本并以与bash相同的方式输出它。
答案 0 :(得分:1)
您总是可以编写一个由xargs调用的小包装脚本,然后再显示IP地址,然后调用checkIP.pl
。
checkIP.sh
#!/usr/bin/env sh
echo -n "$1 : "
checkIP.pl -s $*
然后你可以这样称呼它:
cat iprange | xargs -I % checkIP.sh % > ipresults.txt 2>&1
并希望看到这样的输出:
10.4.8.5 : This IP is free
10.1.1.1 : This IP is free
192.168.1.1 : This IP is used by XPNSE43525
8.8.8.8 : This IP is used by Google DNS
答案 1 :(得分:0)
@squiguy说的是正确的。您可能需要修改PERL脚本。
grep "This IP is free" checkIP.pl
grep "This IP is used by" checkIP.pl
通过运行几个greps
在脚本中找到行所在的行然后假设脚本使用'Getopt :: Std qw(getopts);' -s'参数应附加到的变量是“$ opt_s”
将行更改为
"$opt_s: This IP is free"
"$opt_s: This IP is used by"