私はこのスクリプトを動作させるためにいくつかの問題があり、問題が何であるかを知っている人がいるかどうか疑問に思います。 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行に関するいくつかの注意:
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
A-Za-z0-9
URLから不要な文字を削除してファイル_
名を作成します(URLにない文字の変更、連続した文字の削除)_
。端末へのファイル名の出力
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
ファイル名globbingが呼び出されます(テストに使用されますi='*'
)。
urls.txt
あなたのファイルには例がないので、これについてもっと詳しく言うのは難しいです。