как обнаружить файл через Интернет с помощью команды ping или аналогичной команды?

Чтобы иметь значок с текстом предварительного просмотра для всех текстовых файлов, выполните следующие действия:

Откройте меню «Настройки» на вкладке «Редактировать». Щелкните вкладку «Предварительный просмотр». Теперь вы увидите, что первый вариант - Показать текст в значках ", выбрать его и выбрать Всегда

Результат:

9
задан 9 July 2011 в 08:39

30 ответов

Конечно, есть другой способ - но для этого требуется понимание того, что на самом деле происходит, когда запрос делается через Интернет. Когда вы посещаете страницу своего веб-браузера, данные передаются с использованием протокола HTTP (да, поэтому вы часто видите http:// в начале URL-адресов).

HTTP - это текст основанный на протоколе. Обмен информацией между клиентом и сервером осуществляется путем отправки заголовков, за которыми следует тело запроса. Заголовки содержат много информации о состоянии запроса и передаваемой информации. Заголовок, который вам интересен, чтобы помочь вам в вашей проблеме, на самом деле не является заголовком - это самая первая строка, переданная и содержащая номер, называемый кодом состояния. Это число равно 3 цифрам и передает информацию о состоянии. Если запрос был успешным, результат обычно 200 (не всегда - есть исключения).

Одно можно сказать точно - если запрошенный файл не существует на веб-сервере, сервер должен ответьте с кодом состояния 404. Это указывает на то, что ресурс не найден. (Для любопытных, вот список кодов статуса HTTP и их значение.)

Ну, достаточно теории. Давайте посмотрим, как мы можем это сделать на терминале. Отличный инструмент для извлечения запросов с использованием HTTP, который также предоставляет нам возможность проверять код состояния, - cURL, который доступен в репозиториях Ubuntu. Вы можете установить его с помощью:

sudo apt-get install curl

После того, как вы его установили, вы можете вызвать его так:

curl [website]

... и содержимое данного URL-адреса будет печатать на терминале. Это информация, которую видит ваш веб-браузер при посещении этого URL-адреса. Как это нам помогает? Хорошо, взгляните на здесь . Если мы передадим параметр --head, cURL вернет только заголовки из запроса. Попробуйте с URL-адресом. Вы получите список строк формы:

header-name: header-value

Обратите внимание, конечно, что первая строка выглядит не так. Помните код состояния, о котором мы говорили ранее? Вы заметите это в первой строке как трехзначное число. Теперь нам нужно извлечь его из первой строки с помощью Perl, и мы можем сделать это в терминале с помощью флага Perl -e, который позволит нам передать Perl-код непосредственно интерпретатору Perl. Нам также нужно добавить дополнительный флаг в cURL (--silent), чтобы он не отображал индикатор выполнения и не испортил наш скрипт Perl.

Вот что нам нужно ... это довольно сложный из-за необходимости избежать многого из оболочки:

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

Что это в основном делает, это выбор URL с помощью cURL и запуск его через регулярное выражение 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]

Возвращаемое значение будет «0», если сервер возвратил 404 и «1» в противном случае. Затем вы можете связать эту команду в оболочке так же, как и любую другую команду.

8
ответ дан 25 May 2018 в 19:54
  • 1
    Большое спасибо за теорию и решение, но часть perl, .. мне интересно сделать это просто с помощью простого сценария оболочки, .. на работе, .... – Egy Mohammad Erdin 11 July 2011 в 15:11
  • 2
    @Warung: Ну ... сценарию оболочки нужно будет вызвать внешнюю команду, чтобы не только запрашивать удаленный URL-адрес, но и анализировать ответ. – Nathan Osman 11 July 2011 в 21:54
  • 3
    yups ... и, возможно, я могу попытаться разобрать ответ с помощью команд cut ... но все равно не работает, на данный момент я просто делаю это так, как вы это делали. – Egy Mohammad Erdin 12 July 2011 в 11:04
  • 4
    @ WarungNasi49: что-то вроде curl $url --head --silent | head -n 1 | cut -d ' ' -f 2? – zpea 14 July 2012 в 04:10
  • 5
    @GeorgeEdison: Хороший ответ! Как вы упоминали, цитируя код perl из bash: вы можете избавиться от большого количества обратных косых черт, если одиночные кавычки (') вместо двойных кавычек (") вокруг вашего выражения perl. – zpea 14 July 2012 в 04:15

Конечно, есть другой способ - но для этого требуется понимание того, что на самом деле происходит, когда запрос делается через Интернет. Когда вы посещаете страницу своего веб-браузера, данные передаются с использованием протокола HTTP (да, поэтому вы часто видите http:// в начале URL-адресов).

HTTP - это текст основанный на протоколе. Обмен информацией между клиентом и сервером осуществляется путем отправки заголовков, за которыми следует тело запроса. Заголовки содержат много информации о состоянии запроса и передаваемой информации. Заголовок, который вам интересен, чтобы помочь вам в вашей проблеме, на самом деле не является заголовком - это самая первая строка, переданная и содержащая номер, называемый кодом состояния. Это число равно 3 цифрам и передает информацию о состоянии. Если запрос был успешным, результат обычно 200 (не всегда - есть исключения).

Одно можно сказать точно - если запрошенный файл не существует на веб-сервере, сервер должен ответьте с кодом состояния 404. Это указывает на то, что ресурс не найден. (Для любопытных, вот список кодов статуса HTTP и их значение.)

Ну, достаточно теории. Давайте посмотрим, как мы можем это сделать на терминале. Отличный инструмент для извлечения запросов с использованием HTTP, который также предоставляет нам возможность проверять код состояния, - cURL, который доступен в репозиториях Ubuntu. Вы можете установить его с помощью:

sudo apt-get install curl

После того, как вы его установили, вы можете вызвать его так:

curl [website]

... и содержимое данного URL-адреса будет печатать на терминале. Это информация, которую видит ваш веб-браузер при посещении этого URL-адреса. Как это нам помогает? Хорошо, взгляните на здесь . Если мы передадим параметр --head, cURL вернет только заголовки из запроса. Попробуйте с URL-адресом. Вы получите список строк формы:

header-name: header-value

Обратите внимание, конечно, что первая строка выглядит не так. Помните код состояния, о котором мы говорили ранее? Вы заметите это в первой строке как трехзначное число. Теперь нам нужно извлечь его из первой строки с помощью Perl, и мы можем сделать это в терминале с помощью флага Perl -e, который позволит нам передать Perl-код непосредственно интерпретатору Perl. Нам также нужно добавить дополнительный флаг в cURL (--silent), чтобы он не отображал индикатор выполнения и не испортил наш скрипт Perl.

Вот что нам нужно ... это довольно сложный из-за необходимости избежать многого из оболочки:

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

Что это в основном делает, это выбор URL с помощью cURL и запуск его через регулярное выражение 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]

Возвращаемое значение будет «0», если сервер возвратил 404 и «1» в противном случае. Затем вы можете связать эту команду в оболочке так же, как и любую другую команду.

8
ответ дан 25 July 2018 в 21:36

Конечно, есть другой способ - но для этого требуется понимание того, что на самом деле происходит, когда запрос делается через Интернет. Когда вы посещаете страницу своего веб-браузера, данные передаются с использованием протокола HTTP (да, поэтому вы часто видите http:// в начале URL-адресов).

HTTP - это текст основанный на протоколе. Обмен информацией между клиентом и сервером осуществляется путем отправки заголовков, за которыми следует тело запроса. Заголовки содержат много информации о состоянии запроса и передаваемой информации. Заголовок, который вам интересен, чтобы помочь вам в вашей проблеме, на самом деле не является заголовком - это самая первая строка, переданная и содержащая номер, называемый кодом состояния. Это число равно 3 цифрам и передает информацию о состоянии. Если запрос был успешным, результат обычно 200 (не всегда - есть исключения).

Одно можно сказать точно - если запрошенный файл не существует на веб-сервере, сервер должен ответьте с кодом состояния 404. Это указывает на то, что ресурс не найден. (Для любопытных, вот список кодов статуса HTTP и их значение.)

Ну, достаточно теории. Давайте посмотрим, как мы можем это сделать на терминале. Отличный инструмент для извлечения запросов с использованием HTTP, который также предоставляет нам возможность проверять код состояния, - cURL, который доступен в репозиториях Ubuntu. Вы можете установить его с помощью:

sudo apt-get install curl

После того, как вы его установили, вы можете вызвать его так:

curl [website]

... и содержимое данного URL-адреса будет печатать на терминале. Это информация, которую видит ваш веб-браузер при посещении этого URL-адреса. Как это нам помогает? Хорошо, взгляните на здесь . Если мы передадим параметр --head, cURL вернет только заголовки из запроса. Попробуйте с URL-адресом. Вы получите список строк формы:

header-name: header-value

Обратите внимание, конечно, что первая строка выглядит не так. Помните код состояния, о котором мы говорили ранее? Вы заметите это в первой строке как трехзначное число. Теперь нам нужно извлечь его из первой строки с помощью Perl, и мы можем сделать это в терминале с помощью флага Perl -e, который позволит нам передать Perl-код непосредственно интерпретатору Perl. Нам также нужно добавить дополнительный флаг в cURL (--silent), чтобы он не отображал индикатор выполнения и не испортил наш скрипт Perl.

Вот что нам нужно ... это довольно сложный из-за необходимости избежать многого из оболочки:

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

Что это в основном делает, это выбор URL с помощью cURL и запуск его через регулярное выражение 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]

Возвращаемое значение будет «0», если сервер возвратил 404 и «1» в противном случае. Затем вы можете связать эту команду в оболочке так же, как и любую другую команду.

8
ответ дан 31 July 2018 в 10:58

Конечно, есть другой способ - но для этого требуется понимание того, что на самом деле происходит, когда запрос делается через Интернет. Когда вы посещаете страницу своего веб-браузера, данные передаются с использованием протокола HTTP (да, поэтому вы часто видите http:// в начале URL-адресов).

HTTP - это текст основанный на протоколе. Обмен информацией между клиентом и сервером осуществляется путем отправки заголовков, за которыми следует тело запроса. Заголовки содержат много информации о состоянии запроса и передаваемой информации. Заголовок, который вам интересен, чтобы помочь вам в вашей проблеме, на самом деле не является заголовком - это самая первая строка, переданная и содержащая номер, называемый кодом состояния. Это число равно 3 цифрам и передает информацию о состоянии. Если запрос был успешным, результат обычно 200 (не всегда - есть исключения).

Одно можно сказать точно - если запрошенный файл не существует на веб-сервере, сервер должен ответьте с кодом состояния 404. Это указывает на то, что ресурс не найден. (Для любопытных, вот список кодов статуса HTTP и их значение.)

Ну, достаточно теории. Давайте посмотрим, как мы можем это сделать на терминале. Отличный инструмент для извлечения запросов с использованием HTTP, который также предоставляет нам возможность проверять код состояния, - cURL, который доступен в репозиториях Ubuntu. Вы можете установить его с помощью:

sudo apt-get install curl

После того, как вы его установили, вы можете вызвать его так:

curl [website]

... и содержимое данного URL-адреса будет печатать на терминале. Это информация, которую видит ваш веб-браузер при посещении этого URL-адреса. Как это нам помогает? Хорошо, взгляните на здесь . Если мы передадим параметр --head, cURL вернет только заголовки из запроса. Попробуйте с URL-адресом. Вы получите список строк формы:

header-name: header-value

Обратите внимание, конечно, что первая строка выглядит не так. Помните код состояния, о котором мы говорили ранее? Вы заметите это в первой строке как трехзначное число. Теперь нам нужно извлечь его из первой строки с помощью Perl, и мы можем сделать это в терминале с помощью флага Perl -e, который позволит нам передать Perl-код непосредственно интерпретатору Perl. Нам также нужно добавить дополнительный флаг в cURL (--silent), чтобы он не отображал индикатор выполнения и не испортил наш скрипт Perl.

Вот что нам нужно ... это довольно сложный из-за необходимости избежать многого из оболочки:

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

Что это в основном делает, это выбор URL с помощью cURL и запуск его через регулярное выражение 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]

Возвращаемое значение будет «0», если сервер возвратил 404 и «1» в противном случае. Затем вы можете связать эту команду в оболочке так же, как и любую другую команду.

8
ответ дан 31 July 2018 в 11:57

Конечно, есть другой способ - но для этого требуется понимание того, что на самом деле происходит, когда запрос делается через Интернет. Когда вы посещаете страницу своего веб-браузера, данные передаются с использованием протокола HTTP (да, поэтому вы часто видите http:// в начале URL-адресов).

HTTP - это текст основанный на протоколе. Обмен информацией между клиентом и сервером осуществляется путем отправки заголовков, за которыми следует тело запроса. Заголовки содержат много информации о состоянии запроса и передаваемой информации. Заголовок, который вам интересен, чтобы помочь вам в вашей проблеме, на самом деле не является заголовком - это самая первая строка, переданная и содержащая номер, называемый кодом состояния. Это число равно 3 цифрам и передает информацию о состоянии. Если запрос был успешным, результат обычно 200 (не всегда - есть исключения).

Одно можно сказать точно - если запрошенный файл не существует на веб-сервере, сервер должен ответьте с кодом состояния 404. Это указывает на то, что ресурс не найден. (Для любопытных, вот список кодов статуса HTTP и их значение.)

Ну, достаточно теории. Давайте посмотрим, как мы можем это сделать на терминале. Отличный инструмент для извлечения запросов с использованием HTTP, который также предоставляет нам возможность проверять код состояния, - cURL, который доступен в репозиториях Ubuntu. Вы можете установить его с помощью:

sudo apt-get install curl

После того, как вы его установили, вы можете вызвать его так:

curl [website]

... и содержимое данного URL-адреса будет печатать на терминале. Это информация, которую видит ваш веб-браузер при посещении этого URL-адреса. Как это нам помогает? Хорошо, взгляните на здесь . Если мы передадим параметр --head, cURL вернет только заголовки из запроса. Попробуйте с URL-адресом. Вы получите список строк формы:

header-name: header-value

Обратите внимание, конечно, что первая строка выглядит не так. Помните код состояния, о котором мы говорили ранее? Вы заметите это в первой строке как трехзначное число. Теперь нам нужно извлечь его из первой строки с помощью Perl, и мы можем сделать это в терминале с помощью флага Perl -e, который позволит нам передать Perl-код непосредственно интерпретатору Perl. Нам также нужно добавить дополнительный флаг в cURL (--silent), чтобы он не отображал индикатор выполнения и не испортил наш скрипт Perl.

Вот что нам нужно ... это довольно сложный из-за необходимости избежать многого из оболочки:

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

Что это в основном делает, это выбор URL с помощью cURL и запуск его через регулярное выражение 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]

Возвращаемое значение будет «0», если сервер возвратил 404 и «1» в противном случае. Затем вы можете связать эту команду в оболочке так же, как и любую другую команду.

8
ответ дан 2 August 2018 в 03:13

Конечно, есть другой способ - но для этого требуется понимание того, что на самом деле происходит, когда запрос делается через Интернет. Когда вы посещаете страницу своего веб-браузера, данные передаются с использованием протокола HTTP (да, поэтому вы часто видите http:// в начале URL-адресов).

HTTP - это текст основанный на протоколе. Обмен информацией между клиентом и сервером осуществляется путем отправки заголовков, за которыми следует тело запроса. Заголовки содержат много информации о состоянии запроса и передаваемой информации. Заголовок, который вам интересен, чтобы помочь вам в вашей проблеме, на самом деле не является заголовком - это самая первая строка, переданная и содержащая номер, называемый кодом состояния. Это число равно 3 цифрам и передает информацию о состоянии. Если запрос был успешным, результат обычно 200 (не всегда - есть исключения).

Одно можно сказать точно - если запрошенный файл не существует на веб-сервере, сервер должен ответьте с кодом состояния 404. Это указывает на то, что ресурс не найден. (Для любопытных, вот список кодов статуса HTTP и их значение.)

Ну, достаточно теории. Давайте посмотрим, как мы можем это сделать на терминале. Отличный инструмент для извлечения запросов с использованием HTTP, который также предоставляет нам возможность проверять код состояния, - cURL, который доступен в репозиториях Ubuntu. Вы можете установить его с помощью:

sudo apt-get install curl

После того, как вы его установили, вы можете вызвать его так:

curl [website]

... и содержимое данного URL-адреса будет печатать на терминале. Это информация, которую видит ваш веб-браузер при посещении этого URL-адреса. Как это нам помогает? Хорошо, взгляните на здесь . Если мы передадим параметр --head, cURL вернет только заголовки из запроса. Попробуйте с URL-адресом. Вы получите список строк формы:

header-name: header-value

Обратите внимание, конечно, что первая строка выглядит не так. Помните код состояния, о котором мы говорили ранее? Вы заметите это в первой строке как трехзначное число. Теперь нам нужно извлечь его из первой строки с помощью Perl, и мы можем сделать это в терминале с помощью флага Perl -e, который позволит нам передать Perl-код непосредственно интерпретатору Perl. Нам также нужно добавить дополнительный флаг в cURL (--silent), чтобы он не отображал индикатор выполнения и не испортил наш скрипт Perl.

Вот что нам нужно ... это довольно сложный из-за необходимости избежать многого из оболочки:

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

Что это в основном делает, это выбор URL с помощью cURL и запуск его через регулярное выражение 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]

Возвращаемое значение будет «0», если сервер возвратил 404 и «1» в противном случае. Затем вы можете связать эту команду в оболочке так же, как и любую другую команду.

8
ответ дан 4 August 2018 в 19:07

Конечно, есть другой способ - но для этого требуется понимание того, что на самом деле происходит, когда запрос делается через Интернет. Когда вы посещаете страницу своего веб-браузера, данные передаются с использованием протокола HTTP (да, поэтому вы часто видите http:// в начале URL-адресов).

HTTP - это текст основанный на протоколе. Обмен информацией между клиентом и сервером осуществляется путем отправки заголовков, за которыми следует тело запроса. Заголовки содержат много информации о состоянии запроса и передаваемой информации. Заголовок, который вам интересен, чтобы помочь вам в вашей проблеме, на самом деле не является заголовком - это самая первая строка, переданная и содержащая номер, называемый кодом состояния. Это число равно 3 цифрам и передает информацию о состоянии. Если запрос был успешным, результат обычно 200 (не всегда - есть исключения).

Одно можно сказать точно - если запрошенный файл не существует на веб-сервере, сервер должен ответьте с кодом состояния 404. Это указывает на то, что ресурс не найден. (Для любопытных, вот список кодов статуса HTTP и их значение.)

Ну, достаточно теории. Давайте посмотрим, как мы можем это сделать на терминале. Отличный инструмент для извлечения запросов с использованием HTTP, который также предоставляет нам возможность проверять код состояния, - cURL, который доступен в репозиториях Ubuntu. Вы можете установить его с помощью:

sudo apt-get install curl

После того, как вы его установили, вы можете вызвать его так:

curl [website]

... и содержимое данного URL-адреса будет печатать на терминале. Это информация, которую видит ваш веб-браузер при посещении этого URL-адреса. Как это нам помогает? Хорошо, взгляните на здесь . Если мы передадим параметр --head, cURL вернет только заголовки из запроса. Попробуйте с URL-адресом. Вы получите список строк формы:

header-name: header-value

Обратите внимание, конечно, что первая строка выглядит не так. Помните код состояния, о котором мы говорили ранее? Вы заметите это в первой строке как трехзначное число. Теперь нам нужно извлечь его из первой строки с помощью Perl, и мы можем сделать это в терминале с помощью флага Perl -e, который позволит нам передать Perl-код непосредственно интерпретатору Perl. Нам также нужно добавить дополнительный флаг в cURL (--silent), чтобы он не отображал индикатор выполнения и не испортил наш скрипт Perl.

Вот что нам нужно ... это довольно сложный из-за необходимости избежать многого из оболочки:

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

Что это в основном делает, это выбор URL с помощью cURL и запуск его через регулярное выражение 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]

Возвращаемое значение будет «0», если сервер возвратил 404 и «1» в противном случае. Затем вы можете связать эту команду в оболочке так же, как и любую другую команду.

8
ответ дан 6 August 2018 в 03:25

Конечно, есть другой способ - но для этого требуется понимание того, что на самом деле происходит, когда запрос делается через Интернет. Когда вы посещаете страницу своего веб-браузера, данные передаются с использованием протокола HTTP (да, поэтому вы часто видите http:// в начале URL-адресов).

HTTP - это текст основанный на протоколе. Обмен информацией между клиентом и сервером осуществляется путем отправки заголовков, за которыми следует тело запроса. Заголовки содержат много информации о состоянии запроса и передаваемой информации. Заголовок, который вам интересен, чтобы помочь вам в вашей проблеме, на самом деле не является заголовком - это самая первая строка, переданная и содержащая номер, называемый кодом состояния. Это число равно 3 цифрам и передает информацию о состоянии. Если запрос был успешным, результат обычно 200 (не всегда - есть исключения).

Одно можно сказать точно - если запрошенный файл не существует на веб-сервере, сервер должен ответьте с кодом состояния 404. Это указывает на то, что ресурс не найден. (Для любопытных, вот список кодов статуса HTTP и их значение.)

Ну, достаточно теории. Давайте посмотрим, как мы можем это сделать на терминале. Отличный инструмент для извлечения запросов с использованием HTTP, который также предоставляет нам возможность проверять код состояния, - cURL, который доступен в репозиториях Ubuntu. Вы можете установить его с помощью:

sudo apt-get install curl

После того, как вы его установили, вы можете вызвать его так:

curl [website]

... и содержимое данного URL-адреса будет печатать на терминале. Это информация, которую видит ваш веб-браузер при посещении этого URL-адреса. Как это нам помогает? Хорошо, взгляните на здесь . Если мы передадим параметр --head, cURL вернет только заголовки из запроса. Попробуйте с URL-адресом. Вы получите список строк формы:

header-name: header-value

Обратите внимание, конечно, что первая строка выглядит не так. Помните код состояния, о котором мы говорили ранее? Вы заметите это в первой строке как трехзначное число. Теперь нам нужно извлечь его из первой строки с помощью Perl, и мы можем сделать это в терминале с помощью флага Perl -e, который позволит нам передать Perl-код непосредственно интерпретатору Perl. Нам также нужно добавить дополнительный флаг в cURL (--silent), чтобы он не отображал индикатор выполнения и не испортил наш скрипт Perl.

Вот что нам нужно ... это довольно сложный из-за необходимости избежать многого из оболочки:

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

Что это в основном делает, это выбор URL с помощью cURL и запуск его через регулярное выражение 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]

Возвращаемое значение будет «0», если сервер возвратил 404 и «1» в противном случае. Затем вы можете связать эту команду в оболочке так же, как и любую другую команду.

8
ответ дан 7 August 2018 в 21:11

Конечно, есть другой способ - но для этого требуется понимание того, что на самом деле происходит, когда запрос делается через Интернет. Когда вы посещаете страницу своего веб-браузера, данные передаются с использованием протокола HTTP (да, поэтому вы часто видите http: // в начале URL-адресов).

HTTP - это текстовый протокол. Обмен информацией между клиентом и сервером осуществляется путем отправки заголовков, за которыми следует тело запроса. Заголовки содержат много информации о состоянии запроса и передаваемой информации. Заголовок, который вам интересен, чтобы помочь вам в вашей проблеме, на самом деле не является заголовком - это самая первая строка, переданная и содержащая номер, называемый кодом состояния. Это число равно 3 цифрам и передает информацию о состоянии. Если запрос был успешным, результат обычно составляет 200 (не всегда - есть исключения).

Одно можно сказать наверняка - если запрошенный файл не существует на веб-сервере, сервер должен ответьте с кодом состояния 404. Это указывает на то, что ресурс не найден. (Для любопытных здесь - список кодов состояния HTTP и их значение.)

Ну, достаточно теории. Давайте посмотрим, как мы можем это сделать на терминале. Отличный инструмент для извлечения запросов с использованием HTTP, который также предоставляет нам возможность проверять код состояния, - cURL, который доступен в репозиториях Ubuntu. Вы можете установить его с помощью:

  sudo apt-get install curl  

После того, как вы его установили, вы можете вызвать его так:

  curl [сайт]  

... и содержимое данного URL будет напечатано на терминале. Это информация, которую видит ваш веб-браузер при посещении этого URL-адреса. Как это нам помогает? Хорошо, взгляните на флаги для команды curl . Если мы передадим параметр - head , cURL вернет только заголовки запроса. Попробуйте с URL-адресом. Вы получите список строк формы:

  header-name: header-value  

Обратите внимание, конечно, что первая строка выглядит не так. Помните код состояния, о котором мы говорили ранее? Вы заметите это в первой строке как трехзначное число. Теперь нам нужно извлечь его из первой строки с помощью Perl - и мы можем сделать это в терминале с помощью флага Perl -e , который позволит нам передать Perl-код непосредственно интерпретатору Perl. Нам также нужно добавить дополнительный флаг в cURL ( - silent ), чтобы он не отображал индикатор выполнения и не испортил наш скрипт Perl.

что нам нужно ... это довольно сложно из-за необходимости избежать многого из оболочки:

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

Что это в основном делает, это выбор URL с помощью cURL и запуская его через регулярное выражение Perl, которое извлекает код состояния и выводит его.

Теперь все, что вам нужно, помещается в URL-адрес файла, который вы проверяете, и сравниваете его с «404». Если вы получаете «404», вы можете предположить, что файл не существует.

Конечно, это может быть очень сложно манипулировать в терминале, поэтому вы можете написать небольшой скрипт, который делает это не только проще для понимания, но также проще выполнить:

  #! / usr / bin / perl # Получить URL $ url = $ ARGV [0];  # Получить заголовок $ header = `curl $ url -head --silent`;  # Попробуйте найти код состояния $ header = ~ m / (\ d {3}) /;  # Вернуть результат exit (0), если $ 1 == 404;  выход (1);   

Просто скопируйте и вставьте это в файл. В этом примере я вызову файл url_check . Затем сделайте исполняемый файл с помощью:

  chmod 755 url_check  

Затем вы можете проверить любой файл с помощью следующей простой команды:

  ./url_check  [URL]  

Возвращаемое значение будет «0», если сервер возвратил 404 и «1» в противном случае. Затем вы можете связать эту команду в оболочке так же, как и любую другую команду.

8
ответ дан 10 August 2018 в 09:30

Конечно, есть другой способ - но для этого требуется понимание того, что на самом деле происходит, когда запрос делается через Интернет. Когда вы посещаете страницу своего веб-браузера, данные передаются с использованием протокола HTTP (да, поэтому вы часто видите http: // в начале URL-адресов).

HTTP - это текстовый протокол. Обмен информацией между клиентом и сервером осуществляется путем отправки заголовков, за которыми следует тело запроса. Заголовки содержат много информации о состоянии запроса и передаваемой информации. Заголовок, который вам интересен, чтобы помочь вам в вашей проблеме, на самом деле не является заголовком - это самая первая строка, переданная и содержащая номер, называемый кодом состояния. Это число равно 3 цифрам и передает информацию о состоянии. Если запрос был успешным, результат обычно составляет 200 (не всегда - есть исключения).

Одно можно сказать наверняка - если запрошенный файл не существует на веб-сервере, сервер должен ответьте с кодом состояния 404. Это указывает на то, что ресурс не найден. (Для любопытных здесь - список кодов состояния HTTP и их значение.)

Ну, достаточно теории. Давайте посмотрим, как мы можем это сделать на терминале. Отличный инструмент для извлечения запросов с использованием HTTP, который также предоставляет нам возможность проверять код состояния, - cURL, который доступен в репозиториях Ubuntu. Вы можете установить его с помощью:

  sudo apt-get install curl  

После того, как вы его установили, вы можете вызвать его так:

  curl [сайт]  

... и содержимое данного URL будет напечатано на терминале. Это информация, которую видит ваш веб-браузер при посещении этого URL-адреса. Как это нам помогает? Хорошо, взгляните на флаги для команды curl . Если мы передадим параметр - head , cURL вернет только заголовки запроса. Попробуйте с URL-адресом. Вы получите список строк формы:

  header-name: header-value  

Обратите внимание, конечно, что первая строка выглядит не так. Помните код состояния, о котором мы говорили ранее? Вы заметите это в первой строке как трехзначное число. Теперь нам нужно извлечь его из первой строки с помощью Perl - и мы можем сделать это в терминале с помощью флага Perl -e , который позволит нам передать Perl-код непосредственно интерпретатору Perl. Нам также нужно добавить дополнительный флаг в cURL ( - silent ), чтобы он не отображал индикатор выполнения и не испортил наш скрипт Perl.

что нам нужно ... это довольно сложно из-за необходимости избежать многого из оболочки:

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

Что это в основном делает, это выбор URL с помощью cURL и запуская его через регулярное выражение Perl, которое извлекает код состояния и выводит его.

Теперь все, что вам нужно, помещается в URL-адрес файла, который вы проверяете, и сравниваете его с «404». Если вы получаете «404», вы можете предположить, что файл не существует.

Конечно, это может быть очень сложно манипулировать в терминале, поэтому вы можете написать небольшой скрипт, который делает это не только проще для понимания, но также проще выполнить:

  #! / usr / bin / perl # Получить URL $ url = $ ARGV [0];  # Получить заголовок $ header = `curl $ url -head --silent`;  # Попробуйте найти код состояния $ header = ~ m / (\ d {3}) /;  # Вернуть результат exit (0), если $ 1 == 404;  выход (1);   

Просто скопируйте и вставьте это в файл. В этом примере я вызову файл url_check . Затем сделайте исполняемый файл с помощью:

  chmod 755 url_check  

Затем вы можете проверить любой файл с помощью следующей простой команды:

  ./url_check  [URL]  

Возвращаемое значение будет «0», если сервер возвратил 404 и «1» в противном случае. Затем вы можете связать эту команду в оболочке так же, как и любую другую команду.

8
ответ дан 13 August 2018 в 12:59
  • 1
    Большое спасибо за теорию и решение, но часть perl, .. мне интересно сделать это просто с помощью простого сценария оболочки, .. на работе, .... – Egy Mohammad Erdin 11 July 2011 в 15:11
  • 2
    @Warung: Ну ... сценарию оболочки нужно будет вызвать внешнюю команду, чтобы не только запрашивать удаленный URL-адрес, но и анализировать ответ. – Nathan Osman 11 July 2011 в 21:54
  • 3
    yups ... и, возможно, я могу попытаться разобрать ответ с помощью cut команд ... но все равно не работает, на данный момент я просто делаю это так, как вы это делали. – Egy Mohammad Erdin 12 July 2011 в 11:04
  • 4
    @ WarungNasi49: что-то вроде curl $ url --head --silent | head -n 1 | cut -d '' -f 2 ? – zpea 14 July 2012 в 04:10
  • 5
    @GeorgeEdison: Хороший ответ! Как вы упомянули, цитируя код perl из bash: вы можете избавиться от большого количества обратных косых черт, если одиночные кавычки ( ') вместо двойных кавычек ( ") вокруг вашего perl выражение. – zpea 14 July 2012 в 04:15

Вы можете использовать опцию --spider для wget, которая фактически не загружает файл, а просто проверяет, есть ли он там. В вашем примере:

wget --spider http://192.168.1.1/backup/01012011.zip

Это либо вернет сообщение, содержащее 200 OK, если файл есть, либо ошибка, например. 404 Not Found, если его нет, или 403 Forbidden, если у вас нет разрешения на его получение.

12
ответ дан 25 May 2018 в 19:54
wget http://192.168.1.1/backup/01012011.zip

Код результата 0 означает yes, something else - no.

Вы можете проверить код результата внутри скрипта с переменной $?.

1
ответ дан 25 May 2018 в 19:54
  • 1
    Эй, Микаил! Интерпретация возвращаемых значений - хорошая идея. Однако эта команда будет загружать весь файл, а не только проверить, доступна ли она. – zpea 14 July 2012 в 04:19
wget http://192.168.1.1/backup/01012011.zip

Код результата 0 означает yes, something else - no.

Вы можете проверить код результата внутри скрипта с переменной $?.

1
ответ дан 25 July 2018 в 21:36
  • 1
    Эй, Микаил! Интерпретация возвращаемых значений - хорошая идея. Однако эта команда будет загружать весь файл, а не только проверить, доступна ли она. – zpea 14 July 2012 в 04:19

Вы можете использовать опцию --spider для wget, которая фактически не загружает файл, а просто проверяет, есть ли он там. В вашем примере:

wget --spider http://192.168.1.1/backup/01012011.zip

Это либо вернет сообщение, содержащее 200 OK, если файл есть, либо ошибка, например. 404 Not Found, если его нет, или 403 Forbidden, если у вас нет разрешения на его получение.

12
ответ дан 25 July 2018 в 21:36
wget http://192.168.1.1/backup/01012011.zip

Код результата 0 означает yes, something else - no.

Вы можете проверить код результата внутри скрипта с переменной $?.

1
ответ дан 31 July 2018 в 10:58
  • 1
    Эй, Микаил! Интерпретация возвращаемых значений - хорошая идея. Однако эта команда будет загружать весь файл, а не только проверить, доступна ли она. – zpea 14 July 2012 в 04:19

Вы можете использовать опцию --spider для wget, которая фактически не загружает файл, а просто проверяет, есть ли он там. В вашем примере:

wget --spider http://192.168.1.1/backup/01012011.zip

Это либо вернет сообщение, содержащее 200 OK, если файл есть, либо ошибка, например. 404 Not Found, если его нет, или 403 Forbidden, если у вас нет разрешения на его получение.

12
ответ дан 31 July 2018 в 10:58
wget http://192.168.1.1/backup/01012011.zip

Код результата 0 означает yes, something else - no.

Вы можете проверить код результата внутри скрипта с переменной $?.

1
ответ дан 31 July 2018 в 11:57
  • 1
    Эй, Микаил! Интерпретация возвращаемых значений - хорошая идея. Однако эта команда будет загружать весь файл, а не только проверить, доступна ли она. – zpea 14 July 2012 в 04:19

Вы можете использовать опцию --spider для wget, которая фактически не загружает файл, а просто проверяет, есть ли он там. В вашем примере:

wget --spider http://192.168.1.1/backup/01012011.zip

Это либо вернет сообщение, содержащее 200 OK, если файл есть, либо ошибка, например. 404 Not Found, если его нет, или 403 Forbidden, если у вас нет разрешения на его получение.

12
ответ дан 31 July 2018 в 11:57
wget http://192.168.1.1/backup/01012011.zip

Код результата 0 означает yes, something else - no.

Вы можете проверить код результата внутри скрипта с переменной $?.

1
ответ дан 2 August 2018 в 03:13
  • 1
    Эй, Микаил! Интерпретация возвращаемых значений - хорошая идея. Однако эта команда будет загружать весь файл, а не только проверить, доступна ли она. – zpea 14 July 2012 в 04:19

Вы можете использовать опцию --spider для wget, которая фактически не загружает файл, а просто проверяет, есть ли он там. В вашем примере:

wget --spider http://192.168.1.1/backup/01012011.zip

Это либо вернет сообщение, содержащее 200 OK, если файл есть, либо ошибка, например. 404 Not Found, если его нет, или 403 Forbidden, если у вас нет разрешения на его получение.

12
ответ дан 2 August 2018 в 03:13
wget http://192.168.1.1/backup/01012011.zip

Код результата 0 означает yes, something else - no.

Вы можете проверить код результата внутри скрипта с переменной $?.

1
ответ дан 4 August 2018 в 19:07
  • 1
    Эй, Микаил! Интерпретация возвращаемых значений - хорошая идея. Однако эта команда будет загружать весь файл, а не только проверить, доступна ли она. – zpea 14 July 2012 в 04:19

Вы можете использовать опцию --spider для wget, которая фактически не загружает файл, а просто проверяет, есть ли он там. В вашем примере:

wget --spider http://192.168.1.1/backup/01012011.zip

Это либо вернет сообщение, содержащее 200 OK, если файл есть, либо ошибка, например. 404 Not Found, если его нет, или 403 Forbidden, если у вас нет разрешения на его получение.

12
ответ дан 4 August 2018 в 19:07
wget http://192.168.1.1/backup/01012011.zip

Код результата 0 означает yes, something else - no.

Вы можете проверить код результата внутри скрипта с переменной $?.

1
ответ дан 6 August 2018 в 03:25
  • 1
    Эй, Микаил! Интерпретация возвращаемых значений - хорошая идея. Однако эта команда будет загружать весь файл, а не только проверить, доступна ли она. – zpea 14 July 2012 в 04:19

Вы можете использовать опцию --spider для wget, которая фактически не загружает файл, а просто проверяет, есть ли он там. В вашем примере:

wget --spider http://192.168.1.1/backup/01012011.zip

Это либо вернет сообщение, содержащее 200 OK, если файл есть, либо ошибка, например. 404 Not Found, если его нет, или 403 Forbidden, если у вас нет разрешения на его получение.

12
ответ дан 6 August 2018 в 03:25
wget http://192.168.1.1/backup/01012011.zip

Код результата 0 означает yes, something else - no.

Вы можете проверить код результата внутри скрипта с переменной $?.

1
ответ дан 7 August 2018 в 21:11
  • 1
    Эй, Микаил! Интерпретация возвращаемых значений - хорошая идея. Однако эта команда будет загружать весь файл, а не только проверить, доступна ли она. – zpea 14 July 2012 в 04:19

Вы можете использовать опцию --spider для wget, которая фактически не загружает файл, а просто проверяет, есть ли он там. В вашем примере:

wget --spider http://192.168.1.1/backup/01012011.zip

Это либо вернет сообщение, содержащее 200 OK, если файл есть, либо ошибка, например. 404 Not Found, если его нет, или 403 Forbidden, если у вас нет разрешения на его получение.

12
ответ дан 7 August 2018 в 21:11

Вы можете использовать опцию - spider для wget, которая на самом деле не загружает файл, а просто проверяет, есть ли он там. В вашем примере:

wget --spider http://192.168.1.1/backup/01012011.zip

Это будет либо возвращать сообщение, содержащее 200 OK , если файл есть, либо ошибка, например 404 Не найдено , если его нет, или 403 Запрещено , если у вас нет разрешения на его получение.

12
ответ дан 10 August 2018 в 09:30
  wget http://192.168.1.1/backup/01012011.zip  

Код результата 0 означает «да», что-то еще - нет

может проверить код результата внутри скрипта с переменной $? .

1
ответ дан 10 August 2018 в 09:30

Вы можете использовать опцию - spider для wget, которая на самом деле не загружает файл, а просто проверяет, есть ли он там. В вашем примере:

wget --spider http://192.168.1.1/backup/01012011.zip

Это будет либо возвращать сообщение, содержащее 200 OK , если файл есть, либо ошибка, например 404 Не найдено , если его нет, или 403 Запрещено , если у вас нет разрешения на его получение.

12
ответ дан 13 August 2018 в 12:59
  wget http://192.168.1.1/backup/01012011.zip  

Код результата 0 означает «да», что-то еще - нет

может проверить код результата внутри скрипта с переменной $? .

1
ответ дан 13 August 2018 в 12:59
  • 1
    Эй, Микаил! Интерпретация возвращаемых значений - хорошая идея. Однако эта команда будет загружать весь файл, а не только проверить, доступна ли она. – zpea 14 July 2012 в 04:19

Другие вопросы по тегам:

Похожие вопросы: