为每个结果创建单独的文件

时间:2017-03-13 16:23:29

标签: bash shell for-loop

我有一个bash脚本如下:

SITE_LIST=/home/wps/sites.txt 

for file in `cat $SITE_LIST`
    do
        /usr/bin/wpscan --update --no-color --url $file --disable-tls-checks --follow-redirection --enumerate utp > "$file".txt
    done

当我运行此脚本时,我得到以下输出:

./wpscan_script_2: line 15: www.need_help.com: No such file or directory
./wpscan_script_2: line 15: www.need_help.com: No such file or directory
./wpscan_script_2: line 15: www.need_help.com: No such file or directory
./wpscan_script_2: line 15: www.need_help.com: No such file or directory
./wpscan_script_2: line 15: www.need_help.com: No such file or directory
./wpscan_script_2: line 15: www.need_help.com: No such file or directory

注意为了安全起见,我用网站www.need_help替换了实际网站。这不是实际网站的名称

我正在尝试做的是将每个结果传递到自己的文件中。我目前没有成功。

1 个答案:

答案 0 :(得分:2)

我认为您的文件包含以下行的错误:www.need_help.com/xyzxyz有什么东西,无所谓)

这意味着最终"$file".txt消费www.need_help.com/xyz.txt

因此,您的脚本尝试将输出写入文件夹xyz.txt中的文件www.need_help.com,但由于该文件夹不存在而失败。

错误消息令人困惑但准确:www.need_help.com:没有此类文件或目录

您可能希望用其他内容替换所有不需要的字符,例如只保留字母数字和点

for url in `cat "$SITE_LIST"`
    do
        file="$(printf '%s' "$url" | sed 's/[^A-Za-z0-9\.]/_/g')"
        /usr/bin/wpscan --update --no-color --url "$url" --disable-tls-checks --follow-redirection --enumerate utp > "$file".txt
    done

如果您有许多替代品,您可以修改sed正则表达式。但它至少应该替换所有/,例如:sed 's#/#-#g'

编辑:错过了您使用$ file作为网址