我在使这个脚本工作时遇到了一些问题,想知道是否有人知道问题是什么。它应该将 url 列表作为输入,扫描它们以查找子目录,然后将其输出到不同的文件。
for i in $(urls.txt); do echo $i; fn=$(echo $i | sed "s/\///g"); echo $fn; dirb $i /usr/share/wordlists/dirb/small.txt > $fn; done
该脚本确实正确删除了新文件的斜杠,但我收到错误(翻译自瑞典语)“:没有这样的文件或目录”。可能来自 > $fn 部分。
for i in $(urls.txt); do echo $i; fn=$(echo $i | sed "s/\///g"); echo $fn; dirb $i /usr/share/wordlists/dirb/small.txt -o $fn; done
尝试使用 dirb 自己的输出时,我收到了类似的错误
"OUTPUT_FILE httpwww.website.com
(!) FATAL: Error opening output file: httpwww.website.com"
关于一个衬垫的一些说明:
1)循环遍历 url 列表
2)将 url 输出到终端
3)使用 url 从 url 生成文件名sed
4)将文件名输出到终端
5)通过 dirb 运行 url 并尝试将其输出到文件名
假定的输出文件名对我来说看起来不错,但不起作用。有谁知道这是为什么?
答案1
假设bash
或ksh93
:
- 循环遍历 URL 列表
将 URL 输出到终端
while read -r url; do printf 'URL: "%s"\n' "$url" done <urls.txt
通过从 URL 中删除不需要的字符(将不在 中的字符更改为 、删除连续的 )来创建
A-Za-z0-9
文件_
名_
。输出文件名到终端
while read -r url; do printf 'URL: "%s"\n' "$url" outfile="$( tr -s -c 'A-Za-z0-9' '_' <<<"$url" )" printf 'File: "%s"\n' "$outfile" done <urls.txt
使用
dirb
并直接输出到文件while read -r url; do printf 'URL: "%s"\n' "$url" outfile="$( tr -s -c 'A-Za-z0-9' '_' <<<"$url" )" printf 'File: "%s"\n' "$outfile" dirb "$url" /usr/share/wordlists/dirb/small.txt -o "$outfile" done <urls.txt
我的版本对文件名进行了更多的清理,而不仅仅是删除正斜杠。
此外,echo $i
将调用文件名通配(使用 进行测试i='*'
)。
由于我没有您urls.txt
文件中的示例,因此很难对此进行更多说明。