วิธีรับการตอบกลับจาก URL ใด ๆ


23

ฉันถูกขอให้เขียนเชลล์สคริปต์เพื่อตรวจสอบว่า URL เป็น UP / ทำงานหรือไม่สำหรับโครงการของฉัน

ฉันพยายามค้นหาคำแนะนำทางอินเทอร์เน็ต แต่สิ่งที่ฉันได้รับคือการตรวจสอบว่ามี 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
เพิ่งดูชายคนนั้นอย่างรวดเร็วและดูเหมือนว่าถ้าคุณใช้ - ธงชาติมันจะส่งคืนรหัสทางออก 22 แทนที่จะกลับมาหน้าพูดเกี่ยวกับปัญหาดังนั้น '200 OK' จะให้ค่าตอบแทน จาก 0
Guy

คำตอบ:


20

curl -Is http://www.yourURL.com | head -1คุณสามารถลองใช้คำสั่งนี้เพื่อตรวจสอบ URL ใด ๆ รหัสสถานะ200 OKหมายความว่าคำขอทำได้สำเร็จและ URL นั้นสามารถเข้าถึงได้

คุณยังสามารถทดสอบความพร้อมใช้งานของ URL และรับรหัสการตอบสนองโดยใช้telnetคำสั่ง

telnet www.yourURL.com 80

80 คือหมายเลขพอร์ต


ขอบคุณสำหรับการแบ่งปัน. พยายามเช่นนี้ แต่ฉันคิดว่านี่เป็นการตรวจสอบการมีอยู่เท่านั้น $ URL q.sh ดวลจุดโทษตรวจสอบ: google.com/akash google.com/akashอยู่ แต่นี้คือการให้ความผิดพลาดในเบราว์เซอร์ :: 404 นั่นเป็นข้อผิดพลาด
Akash

@Akash: คุณสามารถเข้าถึงลิงก์นั้นผ่านเบราว์เซอร์ของคุณได้หรือไม่?
Thushi

หากนี่คือลิงก์ที่คุณกำลังพูดถึง --www.google.co.th/akash-- จากนั้น - ทำให้ฉันมีข้อผิดพลาด :: "ไม่พบ 404" "
Akash

ใช่ถ้า URL นั้นไม่มีอยู่ก็ควร :) คุณคาดหวังอะไรอีก ???
Thushi

แต่ - มันคือให้ฉัน - มันมีอยู่ .. ด้านล่างเป็นรหัส :: $ vi q.sh #! / bin / ksh echo "ให้ url ของคุณ" อ่าน url curl -ls "& url" | หัว -1 ถ้า [$? -eq 0] แล้ว echo "Exist" else echo "ไม่อยู่" fi เมื่อฉันเรียกใช้ :: $ sh q.sh ให้ URL ของคุณ www.google.com/akash อยู่ แต่ควรไปที่ ELSE ..
Akash

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

@Aash ดูคำตอบที่อัพเดทแล้ว อย่าใส่ส่วนขยายลงในสคริปต์ของคุณ ./checkURLนอกจากนี้ยังทำงานได้เพียงแค่ หวังว่ามันจะช่วยได้
Valentin Bajrami

ต้องการมันสำหรับวัตถุประสงค์ของโครงการ .. คิดว่า - ไม่มีสิทธิ์เข้าถึงเพื่อเรียกใช้เช่นนั้น .. :(
Akash

อะไรคือสิ่งที่%s\n มีคุณใส่? ในความคิดเห็นของคุณ? โครงการ-Purpose? คุณควรเจาะจงมากขึ้นในสิ่งที่คุณพยายามจะทำให้สำเร็จ
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จะนับจนกว่าจะหมดเวลา 5 หมดอายุ

ในแง่ของสิ่งที่ฉันได้รับการแนะนำnmapอาจใช้งานได้หากคุณมีแพ็คเกจที่ติดตั้งในระบบของคุณ curlจะเป็นตัวเลือกที่ดีกว่า แต่อย่างไรก็ตามนี่คือตัวอย่างการใช้nmap:

nmap -p 80 -sT www.google.com


pingส่งICMPข้อความและแน่นอนไม่ได้ใช้พอร์ตหรือ80 443นอกจากนี้เซิร์ฟเวอร์บางตัวยังบล็อกการร้องขอ ping ซึ่งยังคงพยายามไม่น่าเชื่อถือ
Valentin Bajrami

คุณสามารถปิงพอร์ตได้เช่นกัน ฉันจะส่งตัวอย่างของการส่ง Ping ไปยังพอร์ตบนเว็บไซต์โดยใช้ nmap
ryekayo

nmap -p 80 -sT www.google.com จะ ping พอร์ต 80 ฉันจะแก้ไขคำตอบของฉันในไม่ช้าเมื่อฉันเข้าถึงพีซีของฉัน
ryekayo

1
nmapอีกครั้งเป็นแพ็กเกจที่ไม่ใช่ค่าเริ่มต้นในระบบ * nix จำนวนมาก curlเป็นเรื่องปกติมากขึ้นมาพร้อมกับระบบฐาน คุณยังต้องติดตั้งnmapเพื่อให้ได้สิ่งที่สามารถทำได้ด้วยเครื่องมือมาตรฐาน * ระวัง
Valentin Bajrami

1
เข้าใจขอบคุณสำหรับข้อมูล ฉันอัปเดตคำตอบแล้ว
ryekayo

0

เวลาส่วนใหญ่ไม่ทำงานบน https ถ้าคุณต้องการตรวจสอบคุณสามารถตรวจสอบผ่าน"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.