Herhangi bir URL'den nasıl yanıt alınır?


23

Projem için bir URL'nin UP / Working olup olmadığını kontrol etmek için bir kabuk betiği yazmam istendi .

İnternet üzerinden bazı ipuçları bulmaya çalıştım, fakat elimde olan şey URL’nin olup olmadığını kontrol etmem.

İlk önce denedim 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

Bir sonraki girişimim ile oldu 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

Ancak, her ikisi de yanıtın değil, URL'nin varlığını kontrol ediyor.


1
Sadece curl adama hızlıca bir göz attı ve görünen o ki - kullanırsanız bayrak hatası, sorun hakkında bir sayfa döndürmek yerine 22 çıkış kodunu döndürecektir, bu yüzden sadece '200 OK' bir dönüş değeri verecektir. 0
Guy

Yanıtlar:


20

curl -Is http://www.yourURL.com | head -1Herhangi bir URL'yi kontrol etmek için bu komutu deneyebilirsiniz.Status kodu 200 OK, isteğin başarılı olduğu ve URL'nin erişilebilir olduğu anlamına gelir.

Ayrıca URL kullanılabilirliğini test edebilir ve telnetkomutu kullanarak yanıt kodunu alabilirsiniz.

telnet www.yourURL.com 80

80 port numarasıdır.


Paylaşım için teşekkürler. Bunu da denedim, ama bunun sadece varlığını da kontrol ettiğini düşünüyorum. $ sh q.sh URL'yi kontrol etmek için: google.com/akash google.com/akash var, ancak bu tarayıcıda :: 404 tarayıcıda hata veriyor. Bu bir hata.
Akash,

@Akash: Bu bağlantıya tarayıcın üzerinden erişebiliyor musun?
Thushi,

Bu bağlantı ur uretiyorsanız-- www.google.com/akash-- sonra NO-- Bana bir hata veriyor :: "404 bulunamadı"
Akash

Evet, eğer bu URL mevcut değilse, o zaman olması gerekir :) Başka ne bekliyorsun ???
Thushi,

Ama - bu bana givivng - bu var .. Aşağıdaki kod aşağıdadır :: $ vi q.sh #! / Bin / ksh echo "url'nizi verin" url curl -ls "& url" | [-1? -eq 0] sonra yankı "Var" eko yankı "Var Yok" fi Bunu çalıştırdığımda :: $ sh q.sh URL'nizi verin www.google.com/akash Var ama ELSE'e gitmeli ..
Akash

5

Aşağıdakileri yapabilirsiniz

#!/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İfadeleri Sadece senaryonun akışını göstermek için burada onları koymak, gerekli olsa değildir.görüntü tanımını buraya girin


Bunu denedim ve bana beklenen sonuçları vermiyor.
Akash,

$ Sh q.sh URL kontrol etmek: www.google.com% s \ n www.google.com yok
Akaşayı

@Akash Güncellenmiş cevaba bakınız. Komut dosyasına bir uzantı koymayın. Ayrıca sadece tarafından çalıştırın ./checkURL.
Yardımcı

Proje Amacı İçin İhtiyacınız Var ... Düşünün- Öyle çalıştırmaya erişimi yok .. :(
Akash

Nedir %s\n orada koymak? yorumunuzda Proje amacı? Neyi başarmaya çalıştığınıza daha spesifik olmalısınız.
Valentin Bajrami

1

Aşağıdaki şey benim için çalıştı ....

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

@ THUSHI'nin yazdıklarından denedim.


0

Eğer pingURL’niz varsa , bu da size bir cevap verecektir.

ping -c 5 www.google.com

-c5 zaman aşımına uğrayana kadar nerede sayılır.

Tavsiye edildiklerimin ışığında, nmapsisteminizde paketin kurulu olması durumunda çalışabilir. curldaha iyi bir seçenek olurdu, ama yine de burada kullanarak bir örnek nmap:

nmap -p 80 -sT www.google.com


pingBir ICMPmesaj gönderir ve kesinlikle 80veya kullanmaz 443. Ayrıca, bazı sunucular denemeyi hala güvenilmez yapan ping isteklerini engeller.
Valentin Bajrami

Bağlantı noktalarını da ping edebilirsiniz. Nmap
ryekayo

Nmap -p 80 -sT www.google.com benim PC erişim elde ederken kısaca cevabımı düzenleyeceksiniz portu 80. ping
ryekayo

1
nmapyine birçok * nix sistemde varsayılan olmayan bir pakettir. curlBaz sistem ile birlikte daha yaygın olarak gönderilir. nmapStandart * nix araçlarıyla elde edilebilecek bir şey elde etmek için hala kurulum yapmanız gerekir .
Valentin Bajrami

1
Anladım, bilgi için teşekkürler. Cevabımı güncelledim
ryekayo

0

Çoğu zaman kıvırmak https üzerinde çalışmazsa kontrol etmek istiyorsanız "kıvrılma - değiştirme" yoluyla kontrol edebilirsiniz.

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


-2
status="curl \"${server}:${port}\""  >/tmp/tmp.txt
host_check='grep "<html" /tmp/tmp.txt'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.