
다음과 같은 URL 목록이 포함된 텍스트 파일이 있습니다.
http://somesite.com/some-article/
https://anothersite.fr/somepage.php?page=something
내가 원하는 것은 어떤 URL이 HTTP 코드 200(OK)을 반환하는지 확인하고 이를 다른 파일의 목록에 넣는 것입니다.
이 작업을 수행하기 위해 터미널을 어떻게 사용할 수 있습니까? 곱슬?
답변1
다음을 사용하여 이 작업을 수행해 보세요.세게 때리다:
while read url ; do
ret=$(curl -I -s "$url" -o /dev/null -w "%{http_code}\n")
((ret==200)) && echo "$url" >> new_list_URL
done < list_URL
또는 POSIX 모드:
while read url ; do
ret=$(curl -I -s "$url" -o /dev/null -w "%{http_code}\n")
[ $ret -eq 200 ] && echo "$url" >> new_list_URL
done < list_URL
확인하다남자 곱슬
답변2
답변3
아마도 최선의 방법은 아닐 수도 있지만, 이해하기 쉬운 다음 쉘 스크립트를 사용할 수도 있습니다.
while read i
do
wget --spider $i > /dev/null 2>1
if [ $? == 0 ]
then
echo $i >> validlist.txt
fi
done
이 셸 스크립트를 실행합니다 ./wget_check.sh < urllist.txt
. 여기서 은 wget_check.sh
스크립트 이름이고 urllist.txt는 URL이 포함된 텍스트 파일입니다.
스크립트는 기본적으로 목록의 모든 URL에 대해 실행되며 wget --spider
, URL이 유효한 200 OK 응답을 반환하면 해당 URL이 다른 파일 "validlist.txt"에 추가됩니다.
이
--spider
옵션은 URL을 "크롤링"하고 파일을 다운로드하지 않습니다.출력이 /dev/null로 리디렉션되므로 출력이 생성되지 않습니다.
값을 얻지 못한 경우 각각은
wget
0이 아닌 반환 값을 반환합니다.200 OK response