Bagaimana cara mendapat tanggapan dari URL apa saja?

23

Saya telah diminta untuk menulis skrip shell Untuk memeriksa apakah URL UP / Bekerja atau tidak untuk Proyek saya.

Saya mencoba menemukan beberapa petunjuk melalui internet, tetapi apa pun yang saya dapatkan adalah tentang memeriksa apakah URL itu ada atau tidak.

Saya pertama kali mencoba 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

Upaya saya berikutnya adalah dengan 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

Tapi, keduanya mengecek keberadaan URL bukan jawabannya.

Akash
sumber
1
Baru saja melihat sekilas pria ikal dan tampaknya menyarankan jika Anda menggunakan --fail flag itu akan mengembalikan kode keluar 22 daripada mengembalikan halaman yang mengatakan tentang masalah, jadi hanya '200 OK' akan memberikan nilai kembali dari 0.
Guy

Jawaban:

20

curl -Is http://www.yourURL.com | head -1Anda dapat mencoba perintah ini untuk memeriksa URL apa pun. Kode status 200 OKberarti bahwa permintaan telah berhasil dan URL dapat dijangkau.

Anda juga dapat menguji ketersediaan URL dan mendapatkan kode respons menggunakan telnetperintah

telnet www.yourURL.com 80

80 adalah nomor port.

Thushi
sumber
Terima kasih telah berbagi. Mencoba ini juga, tapi saya pikir ini juga memeriksa keberadaannya saja. URL $ sh q.sh untuk memeriksa: google.com/akash google.com/akash ada tetapi ini memberikan kesalahan pada browser :: 404. Itu kesalahan.
Akash
@Akash: Apakah Anda dapat mengakses tautan itu melalui browser Anda?
Thushi
jika ini adalah tautan ur talking--www.google.com/akash--then NO-- Ini memberi saya kesalahan :: "404-not found"
Akash
Ya, Jika URL itu tidak ada maka seharusnya :) Apa lagi yang Anda harapkan ???
Thushi
Tapi- itu adalah givivng saya - bahwa itu ada .. Di bawah ini adalah kode :: $ vi q.sh #! / Bin / ksh echo "berikan url Anda" baca url curl -l "& url" | kepala -1 jika [$? -eq 0] lalu gema "Ada" gema lagi "Tidak Ada" fi ketika saya menjalankan ini :: $ sh q.sh berikan url Anda www.google.com/akash Exist tetapi harus ke ELSE ..
Akash
5

Anda dapat melakukan hal berikut

#!/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

The ifpernyataan tidak diperlukan meskipun, saya menempatkan mereka di sini hanya untuk menggambarkan aliran script.masukkan deskripsi gambar di sini

Valentin Bajrami
sumber
Saya mencoba ini dan itu tidak memberi saya hasil yang diharapkan.
Akash
$ sh q.sh URL untuk memeriksa: www.google.com% s \ n www.google.com tidak ada
Akash
@Akash Lihat jawaban yang diperbarui. Jangan tambahkan ekstensi ke skrip Anda. Jalankan juga hanya dengan ./checkURL. Semoga ini bisa membantu
Valentin Bajrami
Membutuhkannya untuk Project-Purpose .. think- tidak memiliki akses untuk menjalankannya seperti itu .. :(
Akash
Apa yang %s\n kamu letakkan di sana? pada komentar anda? Tujuan Proyek? Anda harus lebih spesifik dari apa yang ingin Anda capai.
Valentin Bajrami
1

Hal berikut bekerja untuk saya ....

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

Saya mencoba dari apa yang @THUSHI tulis.

Abhishek Tiwari
sumber
0

Jika Anda pingURL, itu akan memberi Anda respons juga

ping -c 5 www.google.com

Di mana -cakan dihitung sampai batas waktu 5 berakhir.

Mengingat apa yang telah saya sarankan, nmapmungkin berfungsi jika Anda memiliki paket yang diinstal pada sistem Anda. curlakan menjadi pilihan yang lebih baik, tetapi nontheless di sini adalah contoh menggunakan nmap:

nmap -p 80 -sT www.google.com

ryekayo
sumber
pingmengirim ICMPpesan dan jelas tidak menggunakan port 80atau 443. Juga beberapa server memblokir permintaan ping yang masih membuat upaya tidak dapat diandalkan.
Valentin Bajrami
Anda dapat melakukan ping port juga. Saya akan mengirimkan contoh ping port pada situs web menggunakan nmap
ryekayo
nmap -p 80 -sT www.google.com akan melakukan ping port 80. Saya akan mengedit jawaban saya segera ketika saya mendapatkan akses ke PC saya
ryekayo
1
nmaplagi adalah paket non-default di banyak sistem * nix. curllebih umum dikirim dengan sistem basis. Anda masih perlu menginstal nmapuntuk mencapai sesuatu yang dapat dicapai dengan alat * nix standar.
Valentin Bajrami
1
Dipahami, terima kasih atas informasinya. Saya memperbarui jawaban saya
ryekayo
0

Sebagian besar waktu curl tidak berfungsi di https jika Anda ingin memeriksa Anda dapat memeriksa melalui "curl --version" Anda tidak akan melihat opsi https dalam hal ini Anda dapat menggunakan di bawah ini

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

Yanish Pradhananga
sumber
-2
status="curl \"${server}:${port}\""  >/tmp/tmp.txt
host_check='grep "<html" /tmp/tmp.txt'
Gyanesh Gupta
sumber