ping 또는 유사한 명령을 사용하여 인터넷을 통해 파일을 감지하는 방법은 무엇입니까?

모하마드 에르 딘

인터넷을 통해 일부 항목을 다운로드 할 수있는 쉘 스크립트가 있습니다. 인터넷에 파일이 있는지 어떻게 알 수 있습니까? http://192.168.1.1/backup/01012011.zip존재 여부를 알고 싶다고 가정 해 봅시다 . 나는 ping명령 을 사용해 보았지만 오류가 표시 /됩니다.

누구든지 나를 도울 수 있습니까? 아니면 다른 방법이 있습니까?

나단 오스만

확실히 다른 방법이 있지만 인터넷을 통해 요청을 할 때 실제로 어떤 일이 발생하는지 이해해야합니다. 웹 브라우저에서 페이지를 방문하면 HTTP라는 프로토콜을 사용하여 데이터가 전송됩니다 (예, 이것이 http://URL의 시작 부분에 자주 표시 되는 이유 입니다).

HTTP는 텍스트 기반 프로토콜입니다. 정보는 요청 본문에 이어 헤더를 전송하여 클라이언트와 서버간에 교환됩니다. 헤더에는 요청 및 전송중인 정보에 대한 많은 상태 정보가 포함됩니다. 문제 해결에 도움이되는 헤더는 실제로 헤더가 아닙니다. 전송되는 첫 번째 줄이며 상태 코드라는 번호를 포함합니다. 이 숫자는 3 자리이며 상태 정보를 전달합니다. 요청이 성공하면 결과는 일반적으로 200입니다 (항상 그런 것은 아닙니다-예외가 있습니다).

한 가지는 확실합니다. 요청한 파일이 웹 서버에없는 경우 서버는 상태 코드 404로 응답해야합니다. 이는 리소스를 찾을 수 없음을 나타냅니다. (호기심를 들어, 여기에 HTTP 상태 코드와 그 의미의 목록입니다.)

글쎄, 충분한 이론. 터미널에서이 작업을 수행하는 방법을 살펴 보겠습니다. 상태 코드를 검사하는 기능을 제공하는 HTTP를 사용하여 요청을 가져 오는 훌륭한 도구는 cURL이며 Ubuntu 저장소에서 사용할 수 있습니다. 다음과 같이 설치할 수 있습니다.

sudo apt-get install curl

설치가 완료되면 다음과 같이 호출 할 수 있습니다.

curl [website]

... 주어진 URL의 내용이 터미널에 인쇄됩니다. 웹 브라우저가 해당 URL을 방문 할 때 표시되는 정보입니다. 이것이 우리에게 어떻게 도움이됩니까? 글쎄, 명령 에 대한 플래그를curl 자세히 살펴보십시오 . 매개 변수를 전달하면 --headcURL은 요청의 헤더 반환 합니다 . URL로 시도해보십시오. 다음과 같은 형식의 줄 목록이 표시됩니다.

header-name: header-value

물론 첫 번째 줄은 이와 같이 보이지 않습니다. 앞서 언급 한 상태 코드를 기억하십니까? 첫 번째 줄에 세 자리 숫자로 표시됩니다. 이제해야 할 일은 Perl을 사용하여 첫 번째 줄에서 추출하는 것입니다. -ePerl 코드를 Perl 인터프리터에 직접 전달할 수있는 Perl 플래그를 사용하여 터미널에서 수행 할 수 있습니다 . 또한 --silent진행률 표시 줄을 표시하고 Perl 스크립트를 엉망으로 만들기 위해 cURL ( )에 추가 플래그를 추가해야합니다 .

다음은 우리가 필요로하는 것입니다 ... 셸에서 많은 것을 이스케이프해야하기 때문에 매우 복잡합니다.

perl -e "\ $ s = \`curl [URL] --head --silent \`; \ $ s = ~ m / (\\ d {3}) /; print \ $ 1"

이것이 기본적으로하는 일은 cURL로 URL을 가져 와서 상태 코드를 추출하여 출력하는 Perl 정규식을 통해 실행하는 것입니다.

이제 확인중인 파일의 URL에 입력하고 '404'와 비교하기 만하면됩니다. '404'가 표시되면 파일이 존재하지 않는다고 가정 할 수 있습니다.

물론 이것은 터미널에서 조작하기가 매우 어려울 수 있으므로 이해하기 쉽고 실행하기 쉽게 만드는 작은 스크립트를 작성할 수 있습니다.

#!/usr/bin/perl

# Get the URL
$url = $ARGV[0];

# Fetch the header
$header = `curl $url --head --silent`;

# Try to find the status code
$header =~ m/(\d{3})/;

# Return the result
exit(0) if $1 == 404;
exit(1);

파일에 복사하여 붙여 넣기 만하면됩니다. 이 예에서는 파일을 url_check. 그런 다음 다음을 사용하여 파일을 실행 가능하게 만듭니다.

chmod 755 url_check

그런 다음 다음 간단한 명령으로 모든 파일을 확인할 수 있습니다.

./url_check [URL]

서버가 404를 반환하면 반환 값은 '0'이고 그렇지 않으면 '1'이됩니다. 그런 다음 다른 명령과 마찬가지로 셸에서이 명령을 연결할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

명령을 사용하여 FTP를 통해 파일을 덮어 쓰는 방법은 무엇입니까?

분류에서Dev

Ubuntu 14.04에서 VPN을 통해 인터넷을 사용하는 방법은 무엇입니까?

분류에서Dev

make를 사용하여 각 파일에 대해 명령을 호출하는 방법은 무엇입니까?

분류에서Dev

유닉스 명령을 사용하여 특정 열에 대해 동일한 값을 가진 파일에서 행을 찾는 방법은 무엇입니까?

분류에서Dev

인터넷을 통해 대용량 파일을 전송하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

dd Linux 명령을 사용하여 인터넷에서 파일을 다운로드하는 방법은 무엇입니까?

분류에서Dev

<compilerarg value = "">를 사용하여 <javac> Ant 작업을 통해 Java 컴파일러에 명령 줄 옵션을 전달하는 방법은 무엇입니까?

분류에서Dev

모바일 광대역 연결을 사용하여 인터넷을 통해 다른 Ubuntu PC에서 Ubuntu PC를 제어하는 방법은 무엇입니까?

분류에서Dev

명령 줄을 사용하여 파일을 여러 폴더에 복사하는 방법은 무엇입니까?

분류에서Dev

명령 줄을 사용하여 여러 파일을 복사하는 방법은 무엇입니까?

분류에서Dev

Unix 명령을 사용하여 메일에 여러 파일을 첨부하는 방법은 무엇입니까?

분류에서Dev

Gmail을 사용하여 명령 줄을 통해 한 줄로 메일을 보내는 가장 간단한 방법은 무엇입니까?

분류에서Dev

CMake : 소스 파일을 생성하기 위해 여러 파일에서 사용자 지정 명령을 실행하는 방법은 무엇입니까?

분류에서Dev

Ubuntu에서 인터넷을 ping하는 방법은 무엇입니까?

분류에서Dev

명령 프롬프트 또는 배치 파일을 사용하여 사용자가 있는지 확인하는 방법은 무엇입니까?

분류에서Dev

USB를 통해 두 컴퓨터간에 인터넷을 공유하는 방법은 무엇입니까?

분류에서Dev

dd 명령을 사용하여 .img 파일을 SD 카드에 복사하는 방법은 무엇입니까?

분류에서Dev

Linux arecord 명령을 사용하여 여러 FLAC 파일을 생성하는 방법은 무엇입니까?

분류에서Dev

rm 명령을 사용하여 여러 파일을 삭제하는 방법은 무엇입니까?

분류에서Dev

인터넷을 통해 파일을 사용하여 명령을 실행 하시겠습니까?

분류에서Dev

'날짜'명령을 사용하여 한 해의 주 번호를 표시하는 방법은 무엇입니까?

분류에서Dev

명령 줄을 통해 이미지 파일을 미러링하는 방법은 무엇입니까?

분류에서Dev

wget 명령을 사용하여 Dropbox 파일을 다운로드하는 방법은 무엇입니까?

분류에서Dev

정규식을 사용하여 명령 줄에서 파일을 삭제하는 방법은 무엇입니까?

분류에서Dev

WinSCP 명령 줄을 사용하여 파일을 다운로드하는 방법은 무엇입니까?

분류에서Dev

쉘 프로파일을 사용하여 v 명령을 변경 / 수정하는 방법은 무엇입니까?

분류에서Dev

find 및 rm 명령을 사용하여 파일을 제거하는 방법은 무엇입니까?

분류에서Dev

명령 줄을 사용하여 구성 파일을 편집하는 방법은 무엇입니까?

분류에서Dev

명령을 사용하여 github 저장소에 파일을 업로드하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    명령을 사용하여 FTP를 통해 파일을 덮어 쓰는 방법은 무엇입니까?

  2. 2

    Ubuntu 14.04에서 VPN을 통해 인터넷을 사용하는 방법은 무엇입니까?

  3. 3

    make를 사용하여 각 파일에 대해 명령을 호출하는 방법은 무엇입니까?

  4. 4

    유닉스 명령을 사용하여 특정 열에 대해 동일한 값을 가진 파일에서 행을 찾는 방법은 무엇입니까?

  5. 5

    인터넷을 통해 대용량 파일을 전송하는 가장 좋은 방법은 무엇입니까?

  6. 6

    dd Linux 명령을 사용하여 인터넷에서 파일을 다운로드하는 방법은 무엇입니까?

  7. 7

    <compilerarg value = "">를 사용하여 <javac> Ant 작업을 통해 Java 컴파일러에 명령 줄 옵션을 전달하는 방법은 무엇입니까?

  8. 8

    모바일 광대역 연결을 사용하여 인터넷을 통해 다른 Ubuntu PC에서 Ubuntu PC를 제어하는 방법은 무엇입니까?

  9. 9

    명령 줄을 사용하여 파일을 여러 폴더에 복사하는 방법은 무엇입니까?

  10. 10

    명령 줄을 사용하여 여러 파일을 복사하는 방법은 무엇입니까?

  11. 11

    Unix 명령을 사용하여 메일에 여러 파일을 첨부하는 방법은 무엇입니까?

  12. 12

    Gmail을 사용하여 명령 줄을 통해 한 줄로 메일을 보내는 가장 간단한 방법은 무엇입니까?

  13. 13

    CMake : 소스 파일을 생성하기 위해 여러 파일에서 사용자 지정 명령을 실행하는 방법은 무엇입니까?

  14. 14

    Ubuntu에서 인터넷을 ping하는 방법은 무엇입니까?

  15. 15

    명령 프롬프트 또는 배치 파일을 사용하여 사용자가 있는지 확인하는 방법은 무엇입니까?

  16. 16

    USB를 통해 두 컴퓨터간에 인터넷을 공유하는 방법은 무엇입니까?

  17. 17

    dd 명령을 사용하여 .img 파일을 SD 카드에 복사하는 방법은 무엇입니까?

  18. 18

    Linux arecord 명령을 사용하여 여러 FLAC 파일을 생성하는 방법은 무엇입니까?

  19. 19

    rm 명령을 사용하여 여러 파일을 삭제하는 방법은 무엇입니까?

  20. 20

    인터넷을 통해 파일을 사용하여 명령을 실행 하시겠습니까?

  21. 21

    '날짜'명령을 사용하여 한 해의 주 번호를 표시하는 방법은 무엇입니까?

  22. 22

    명령 줄을 통해 이미지 파일을 미러링하는 방법은 무엇입니까?

  23. 23

    wget 명령을 사용하여 Dropbox 파일을 다운로드하는 방법은 무엇입니까?

  24. 24

    정규식을 사용하여 명령 줄에서 파일을 삭제하는 방법은 무엇입니까?

  25. 25

    WinSCP 명령 줄을 사용하여 파일을 다운로드하는 방법은 무엇입니까?

  26. 26

    쉘 프로파일을 사용하여 v 명령을 변경 / 수정하는 방법은 무엇입니까?

  27. 27

    find 및 rm 명령을 사용하여 파일을 제거하는 방법은 무엇입니까?

  28. 28

    명령 줄을 사용하여 구성 파일을 편집하는 방법은 무엇입니까?

  29. 29

    명령을 사용하여 github 저장소에 파일을 업로드하는 방법은 무엇입니까?

뜨겁다태그

보관