Bash 脚本用于在终端检查 URL 是否处于启动或关闭状态?

Bash 脚本用于在终端检查 URL 是否处于启动或关闭状态?

请原谅我的英语不好:

情况是这样的;我制作了自己的 IPTV 列表,获取免费网站的 URL 并将它们传递给智能电视,我想知道哪些 URL 有效,哪些 URL 无效,以便替换它们,而手动执行这是一项不可能完成的任务,我发现使用 snap bash 脚本从终端删除旧快照非常棒,只需一个命令,这样的事情对我来说就很有效,但显然我对脚本、bash 或编程一无所知,如果你能帮我一个 bash 脚本,检查终端中一个 .txt 文档的所有 URL,指出哪些是启动的,哪些是关闭的,我将不胜感激,这将节省我很多时间,我提前感谢你的帮助!

答案1

我已测试过几次,似乎运行正常。


#!/bin/bash

if [ $# -eq 0 ]
then
    fin=-
else 
    fin=$1
fi

urlarr=( $(cat $fin | strings | tr ',:\/' '\n\n\n' | grep -i "\.com\|\.net\|\.edu\|\.org\|^[0-9].*\.[0-9].*\.[0-9].*\.[0-9].*" | tr '\n' ' ' )  )

for i in ${urlarr[@]}
do
  if ping -c1 -w1 $i 2>&1 >/dev/null
  then
    echo $i is up.
  else
    echo $i is down.
  fi
done

exit $?

答案2

这是我能做的最好的事情,无需测试您的网址。如果 wget 部分不起作用,您可以考虑用 curl 或 ncat (nc) 替换以测试流是否有效。


#!/bin/bash

if [ $# -eq 0 ]
then
    fin=-
else 
    fin=$1
fi

urlarr=( $(cat $fin | strings | grep '://' | grep -i "\.com\|\.net\|\.edu\|\.org\|[0-9].*\.[0-9].*\.[0-9].*\.[0-9].*" | tr '\n' ' ' )  )

for i in ${urlarr[@]}
do
  if wget -q --tries=1 --no-cache --spider -O /dev/null --ignore-length -T 1 "$i"
  then
    echo $i is good.
  else
    echo $i is bad.
  fi
done

exit $?

相关内容