我正在使用以下 bash 脚本来检查文件中的活动主机,
echo "Checking for 200 status code.."
cat $1 | sort -u | while read line; do
if [ $(curl -I -s "https://$line" -o /dev/null -w "%{http_code}\n") = 200 ]
then
echo $line >> livedomains
else
echo $line >> otherdomains
fi
done < $1
代码工作正常,我需要的是在一段时间后打印检查的行数(url),以通知用户要检查的剩余行数(url)。
答案1
#!/bin/bash
# update status after step seconds or greater
step=5
count=0
echo "Checking for 200 status code.."
start=$(date +'%s')
sort -u "$1" | while read line; do
http_status=$(curl -I -s "https://$line" -o /dev/null -w "%{http_code}\n")
case "$http_status" in
200)
echo "$line" >> livedomains
;;
302)
echo "$line" >> redirecteddomains
;;
*)
echo "$line" >> otherdomains
esac
((count++))
now=$(date +'%s')
if [ "$start" -le "$((now - step))" ]; then
start=$now
echo "completed: $count"
fi
done
更新间隔设置为5秒,您可以将其更改为120。
编辑:我改变了主意并使用计数器变量而不是wc
.
额外的变化:
#!/bin/bash
在第一行添加了 shebang- 删除
< $1
最后一行的输入(否则未排序) - 添加了一些引号