请原谅我的英语不好:
情况是这样的;我制作了自己的 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 $?