Làm thế nào để có được phản hồi từ bất kỳ URL nào?


23

Tôi đã được yêu cầu viết tập lệnh shell Để kiểm tra xem URL có LÊN / Hoạt động hay không cho Dự án của tôi.

Tôi đã cố gắng tìm một số gợi ý qua internet, nhưng bất cứ điều gì tôi nhận được là về việc kiểm tra xem URL có tồn tại hay không.

Lần đầu tiên tôi thử với 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

Nỗ lực tiếp theo của tôi là với 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

Nhưng, cả hai đang kiểm tra sự tồn tại của URL chứ không phải phản hồi.


1
Chỉ cần nhìn nhanh vào người đàn ông cuộn tròn và dường như đề nghị nếu bạn sử dụng cờ --fail, nó sẽ trả về mã thoát là 22 thay vì trả về một trang nói về vấn đề, vì vậy chỉ '200 OK' sẽ cho giá trị trả về của 0.
Guy

Câu trả lời:


20

curl -Is http://www.yourURL.com | head -1Bạn có thể thử lệnh này để kiểm tra bất kỳ URL nào. Mã số 200 OKcó nghĩa là yêu cầu đã thành công và URL có thể truy cập được.

Bạn cũng có thể kiểm tra tính khả dụng của URL và nhận mã phản hồi bằng telnetlệnh

telnet www.yourURL.com 80

80 là số cổng.


Cám ơn vì đã chia sẻ. Đã thử điều này là tốt, nhưng tôi nghĩ rằng điều này cũng chỉ kiểm tra sự tồn tại. $ sh q.sh URL để kiểm tra: google.com/akash google.com/akash tồn tại nhưng điều này gây ra lỗi trong trình duyệt :: 404. Đó là một lỗi.
Akash

@Akash: Bạn có thể truy cập liên kết đó thông qua trình duyệt của mình không?
Vì vậy,

nếu đây là liên kết bạn đang nói--www.google.com.vn/akash-- thì KHÔNG - Đó là lỗi cho tôi :: "404-không tìm thấy"
Akash

Vâng, nếu URL đó không tồn tại thì nó nên :) Bạn còn mong đợi gì nữa không ???
Do đó,

Nhưng- đó là cho tôi - rằng nó tồn tại .. Dưới đây là mã :: $ vi q.sh #! / Bin / ksh echo "cho url của bạn" đọc url curl -ls "& url" | đầu -1 nếu [$? -eq 0] sau đó lặp lại "Tồn tại" khác echo "Không tồn tại" fi Khi tôi chạy này :: $ sh q.sh hãy cho url của bạn www.google.com.vn/akash Tồn tại nhưng nó sẽ chuyển đến ELSE ..
Akash

5

Bạn có thể làm như sau

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

Các iftuyên bố là không cần thiết mặc dù, tôi đặt chúng ở đây chỉ để minh họa dòng chảy của kịch bản.nhập mô tả hình ảnh ở đây


tôi đã thử điều này và nó không mang lại cho tôi kết quả như mong đợi.
Akash

$ sh q.sh URL để kiểm tra: www.google.com% s \ n www.google.com không tồn tại
Akash

@Akash Xem câu trả lời cập nhật. Đừng đặt phần mở rộng cho tập lệnh của bạn. Cũng chạy nó chỉ bằng cách ./checkURL. Hy vọng nó sẽ giúp
Valentin Bajrami ngày

Cần nó cho mục đích dự án .. nghĩ rằng - không có quyền truy cập để chạy nó như thế .. :(
Akash

Bạn %s\n đặt cái gì ở đó? về nhận xét của bạn? Dự án-Mục đích? Bạn nên cụ thể hơn về những gì bạn đang cố gắng thực hiện.
Valentin Bajrami ngày

1

Điều sau đây làm việc cho tôi ....

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

Tôi đã thử từ những gì @THUSHI đã viết.


0

Nếu bạn pinglà URL, điều đó cũng sẽ cung cấp cho bạn một phản hồi

ping -c 5 www.google.com

Nơi -csẽ tính cho đến khi hết thời gian 5 hết hạn.

Theo những gì tôi đã được thông báo, nmapcó thể hoạt động nếu bạn cài đặt gói trên hệ thống của mình. curlsẽ là một lựa chọn tốt hơn, nhưng không cần thiết ở đây là một ví dụ sử dụng nmap:

nmap -p 80 -sT www.google.com


pinggửi ICMPtin nhắn và chắc chắn không sử dụng cổng 80hoặc 443. Ngoài ra, một số máy chủ chặn yêu cầu ping mà vẫn không cố gắng.
Valentin Bajrami

Bạn có thể ping cổng là tốt. Tôi sẽ gửi một ví dụ về việc ping một cổng trên một trang web bằng cách sử dụng nmap
ryekayo

nmap -p 80 -sT www.google.com sẽ ping cổng 80. Tôi sẽ chỉnh sửa câu trả lời của mình ngay khi tôi có quyền truy cập vào PC của mình
ryekayo

1
nmaplại là một gói không mặc định trong nhiều hệ thống * nix. curllà phổ biến hơn vận chuyển với hệ thống cơ sở. Bạn vẫn cần cài đặt nmapđể đạt được thứ gì đó có thể đạt được bằng các công cụ * nix tiêu chuẩn.
Valentin Bajrami

1
Hiểu, cảm ơn cho thông tin. Tôi đã cập nhật câu trả lời của mình
ryekayo

0

Hầu hết các lần curl không hoạt động trên https nếu bạn muốn kiểm tra, bạn có thể kiểm tra thông qua "curl --version", bạn sẽ không thấy tùy chọn https trong trường hợp đó bạn có thể sử dụng bên dưới

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'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.