URL에서 응답을 얻는 방법?


23

URL이 UP / Working인지 아닌지 확인하기 위해 쉘 스크립트 작성하라는 요청을 받았습니다 .

인터넷을 통해 힌트를 찾으려고했지만 URL이 존재하는지 여부를 확인하는 것입니다.

나는 처음으로 시도했다 wget.

wget -S --spider https://genesis-dev.webbank.ssmb.com:21589/gop-ui/app.jsp 2>&1 | awk '/^  /'
if [ $? -ne 0 ]
then echo "Server is UP"
else
echo "Server is down"
fi

다음 시도는입니다 curl.

curl -ivs  https://genesis-dev.webbank.ssmb.com:21589/opconsole-sit/opconsole.html#
if [ $? -ne 0 ]
then echo "Server is UP"
else
echo "Server is down"
fi

그러나 둘 다 응답이 아닌 URL의 존재를 확인하고 있습니다.


1
curl man을 간단히 살펴보면 --fail 플래그를 사용하면 문제에 대해 말하는 페이지를 반환하지 않고 종료 코드 22를 반환하므로 '200 OK'만 반환 값을 제공합니다. of 0.
Guy

답변:


20

curl -Is http://www.yourURL.com | head -1이 명령을 사용 200 OK하여 URL 을 확인할 수 있습니다. 상태 코드 는 요청이 성공했으며 URL에 도달 할 수 있음을 의미합니다.

telnet명령을 사용하여 URL 가용성을 테스트하고 응답 코드를 얻을 수도 있습니다.

telnet www.yourURL.com 80

포트 번호는 80입니다.


공유해 주셔서 감사합니다. 이것도 시도했지만 이것도 존재를 확인하고 있다고 생각합니다. $ sh q.sh 확인할 URL : google.com/akash google.com/akash 가 있지만 브라우저 :: 404에서 오류가 발생합니다. 오류입니다.
Akash

@Akash : 브라우저를 통해 해당 링크에 액세스 할 수 있습니까?
Thushi

이것이 링크 ur 인 경우 --www.google.com/akash--then NO-- 오류입니다 : :: "404-not found"
Akash

예, 해당 URL이 존재하지 않으면 다음을 수행해야합니다.
Thushi

그러나-그것은 givivng입니다-그것이 존재합니다. 아래는 코드입니다 :: $ vi q.sh #! / bin / ksh echo "url 제공"url curl 읽기 -ls "& url"| 헤드 -1 인 경우 [$? -eq 0] 다음 에코 난이 : $ 쉬 q.sh주고 당신의 URL www.google.com/akash의 존재를 실행하면 인터넷을 "존재하지 않는다"다른 반향을 "존재"하지만 ELSE .. 가야한다
아카 쉬

5

당신은 다음을 할 수 있습니다

#!/bin/bash

read -p "URL to check: " url
if curl --output /dev/null --silent --head --fail "$url"; then
  printf '%s\n' "$url exist"
else
  printf '%s\n' "$url does not exist"
fi

if문은 그냥 스크립트의 흐름을 설명하기 위해 여기에 넣어 필요하지만하지 않습니다.여기에 이미지 설명을 입력하십시오


나는 이것을 시도했지만 그것은 나에게 기대되는 결과를주지 않고있다.
Akash

$ sh q.sh 확인할 URL : www.google.com % s \ n www.google.com이 없습니다
Akash

@Akash 업데이트 된 답변을 참조하십시오. 스크립트에 확장자를 두지 마십시오. 또한에 의해 실행하십시오 ./checkURL. 도움이
Valentin Bajrami

이 프로젝트-목적을 위해 .. think- 그렇게 실행 권한이 없습니다 필요 .. :(
아카 쉬

%s\n 거기에 무엇 을 넣었습니까? 당신의 의견에? 프로젝트 목적? 달성하려는 목표에 대해보다 구체적이어야합니다.
Valentin Bajrami

1

다음 일이 나를 위해 일했습니다 ....

status="$(curl -Is http://www.google.com | head -1)"
validate=( $status )
if [ ${validate[-2]} == "200" ]; then
  echo "OK"
else
  echo "NOT RESPONDING"
fi

@THUSHI가 쓴 것에서 시도했습니다.


0

당신 ping이 URL 이라면 , 그것은 또한 당신에게 응답을 줄 것입니다

ping -c 5 www.google.com

어디 -c오의 제한 시간이 만료 될 때까지 계산됩니다.

내가 조언 한 바에 비추어, nmap시스템에 패키지가 설치되어 있으면 작동 할 수 있습니다. curl더 나은 옵션이지만, 그럼에도 불구하고 다음과 같은 예제가 있습니다 nmap.

nmap -p 80 -sT www.google.com


ping전송 ICMP포트를 사용하지 않습니다 확실히 메시지 및 80또는 443. 또한 일부 서버는 핑 요청을 차단하여 여전히 시도를 신뢰할 수 없게 만듭니다.
Valentin Bajrami

포트도 핑할 수 있습니다. nmap을 사용하여 웹 사이트에 포트를 핑하는 예를 제출합니다.
ryekayo

nmap은 -p 80 -sT www.google.com 난 내 PC에 접근 얻을 때 나는 곧 내 대답을 편집합니다 포트 80를 ping합니다
ryekayo

1
nmap다시 많은 * nix 시스템에서 기본 패키지가 아닌 패키지입니다. curl기본 시스템과 함께 제공되는 것이 더 일반적입니다. nmap표준 * nix 도구로 얻을 수있는 것을 달성 하려면 여전히 설치해야 합니다.
Valentin Bajrami

1
이해 해주셔서 감사합니다. 나는 내 답변을 업데이트
ryekayo

0

curl에서 대부분 curl이 작동하지 않으면 "curl --version" 을 통해 확인할 수 있습니다 .이 경우 https 옵션이 표시되지 않습니다.

wget --post-data '{"name":"Radha", "Car": "Jaquar"}' --header "Content-Type: application/json" --no-check-certificate https://yourrequiredURI


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.