如何检查文件中URL列表的有效性?

时间:2018-02-19 19:54:39

标签: bash curl

尝试卷曲网址列表以确认它们是否有效。我想将主动与非主动分开但我被卡住了。我非常擅长打击脚本,因为我相信你能说出来。 cat功能进入url并不能正常工作。分离内容也无法正常工作。大量的网址将进入nv.txt,但我知道它们是活跃的网址。

感谢您提前获得帮助

#!/bin/bash
url=$(cat non-ssl-list2.txt)
if curl --output /dev/null --silent --head --fail "$url"
then
    echo $url Exists > v.txt
else
    echo "$url Does Not Exist" > nv.txt
fi

https://hastebin.com/tuqekocate.bash

(代码一直被切断,所以我把它放入hastebin)。

https://hastebin.com/nogasiyeyo.css (清单样本)

2 个答案:

答案 0 :(得分:1)

您的代码中存在问题:

url=$(cat non-ssl-list2.txt)

这会将输入文件的所有行压缩成单个字符串。那不是你想要的,对吗?

您可以逐行遍历文件中的网址,并调用curl来测试网址是否有效:

while read -r url; do                    # loop through the array
  if curl -s --head "$url" > /dev/null; then  # check URL validity
    printf '%s\n' "$url exists"
  else
    printf '%s\n' "$url does not exist"
  fi
done < non-ssl-list2.txt

请参阅以下相关帖子:

答案 1 :(得分:1)

可以使用&&||运算符根据curl命令的退出状态打印到输出文件。

$ curl -k -s -o /dev/null "${url}" && echo "${url} : Exists" > 1.txt || echo "${url} : Does not exist" > 2.txt

列表,

#!/bin/bash
> 1.txt  # Create empty text file
> 2.txt  # 
while IFS= read -r url
do
  curl -k -s -o /dev/null "${url}" && echo "${url} : Exists" >> 1.txt || echo "${url}: Does not exist" >> 2.txt
done < /path/to/list.txt