将输入行子集添加到前缀shell脚本输出

时间:2016-01-18 15:07:18

标签: bash shell

我有一个复杂的shell脚本(<b>John</b>)来检查域是否容易受到DNS区域传输漏洞的攻击。只需check_axfr.sh作为single domain来检查该域是否容易受到攻击。

示例:

argument

如果它在域的任何#./check_axfr.sh example.com 中容易受到攻击,它将产生以下结果。

name servers

为了检查多个域,我将所有域列表(100)保存在文件DOMAIN example.com: ns0.example.com. Vulnerable DOMAIN example.com: ns1.example.com. Not Vulnerable 中。

Input.txt

我试过了,

example.com
abc.com
mno.com
xyz.com
prq.com
.......

现在,我的输入文件(for i in $(cat Input.txt);do sh check_axfr.sh $i;done )现在将包含Input.txt

number,domain

我想输出为,

1,example.com
2,abc.com
3,mno.com
4,xyz.com
5,prq.com
.........

我对shell脚本不太熟悉&amp;我不想改变父脚本,有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

读取输入行并在Window.Current上拆分以获取输入行的部分。使用第二部分即域名<{1}}呼叫:

,

用法:

check.axfr.sh

答案 1 :(得分:2)

如果您不介意安装额外的工具,您也可以使用parallel使用一个命令执行此操作(显然以并行模式而不是默认的串行模式运行作业):

parallel -C',' --keep-order './check.axfr.sh "{2}" | sed "s/^/{1}, /"' < Input.txt

<强>突围

parallel 
  -C ','                  # use comma as column separator of each input line
  --keep-order            # keep the same order in the output
  './check.axfr.sh "{2}"  # execute per job the check.axfr.sh passing domain column
  | sed "s/^/{1}, /"'     # Add the first column (number) before each line 
                          # of the output of the script
  < Input.txt  # load lines from Input.txt file

<强>输出

  

1,DOMAIN domain1.com:ns0.example.com。弱势
  1,DOMAIN domain1.com:ns1.example.com。不易受伤害   2,DOMAIN domain2.com:ns0.example.com。弱势
  2,DOMAIN domain2.com:ns1.example.com。不易受伤害   3,DOMAIN domain3.com:ns0.example.com。弱势
  3,DOMAIN domain3.com:ns1.example.com。不易受伤害   4,DOMAIN domain4.com:ns0.example.com。弱势
  4,DOMAIN domain4.com:ns1.example.com。不脆弱

注意

如果你想用parallel来节省一些比特,你可以从输入文件中删除number列并使用它:

parallel --keep-order './check.axfr.sh "{}" | sed "s/^/{#}, /"' < Input.txt

其中{#}是执行作业的ID号。输出将是相同的。