在 shell 脚本中使用 wget 来测试连通性
Use wget in shell script to test connectivity
我在 urls.txt
中有一个 URL 的列表,我想测试与服务器的连接。
urls.txt:
www.google.com
www.yahoo.com
www.gmail.com
https://whosebug.com/questions
我想 运行 一个简单的 shell 脚本来测试每个 URL 的连通性,并将 wget 的输出写入文件 wget.log
我还需要使用 --spider
关闭下载
这是我的脚本:
urls=( $(awk '/URLs:/{y=1;next}y' urls.txt) )
for url in "${urls[@]}"
do
wget --spider -o wget.log "${url}"
if [ grep -q 'connected' wget.log ]; then
echo 'successful'
else
echo 'unsuccessful'
fi
rm wget.log
done
for
循环的工作原理是它将每个 URL 正确地存储在变量 url
中,但我收到以下错误:line 6: [: too many arguments
.
您的 if
语句中不需要 [ ... ]
,只需使用
...
if grep -q 'connected' wget.log; then
...
这样 if
语句会查看 grep
的 return 值。
我在 urls.txt
中有一个 URL 的列表,我想测试与服务器的连接。
urls.txt:
www.google.com
www.yahoo.com
www.gmail.com
https://whosebug.com/questions
我想 运行 一个简单的 shell 脚本来测试每个 URL 的连通性,并将 wget 的输出写入文件 wget.log
我还需要使用 --spider
这是我的脚本:
urls=( $(awk '/URLs:/{y=1;next}y' urls.txt) )
for url in "${urls[@]}"
do
wget --spider -o wget.log "${url}"
if [ grep -q 'connected' wget.log ]; then
echo 'successful'
else
echo 'unsuccessful'
fi
rm wget.log
done
for
循环的工作原理是它将每个 URL 正确地存储在变量 url
中,但我收到以下错误:line 6: [: too many arguments
.
您的 if
语句中不需要 [ ... ]
,只需使用
...
if grep -q 'connected' wget.log; then
...
这样 if
语句会查看 grep
的 return 值。