2010-05-27 23 views
48

Tôi đang cố gắng tạo một chương trình có thể chuyển đổi một loạt các bản quét manga thành một tệp pdf và tôi không muốn phải cố gắng tải xuống hình ảnh để xác định xem tôi có đúng url hay không. Có một lệnh shell scripting mà tôi có thể sử dụng để chỉ kiểm tra xem một trang web có tồn tại không?Làm cách nào để xác định liệu một trang web có tồn tại với shell scripting hay không?

+0

Vỏ nào? UNIX shell? Dấu nhắc lệnh Windows? Windows Powershell? – zneak

+0

UNIX, tôi đoán, bởi vì nó có một thẻ unix. – thepiercingarrow

Trả lời

87

Theo một * NIX, bạn có thể sử dụng curl phát hành một HEAD yêu cầu đơn giản (HEAD chỉ yêu cầu các tiêu đề, không phải là cơ thể trang):

curl --head http://myurl/ 

Sau đó, bạn có thể chỉ mất dòng đầu tiên, mà chứa các mã trạng thái HTTP (200 OK, 404 Not Found, vv):

curl -s --head http://myurl/ | head -n 1 

Và sau đó kiểm tra xem bạn có một phản ứng phong nha (mã trạng thái là 200 hoặc 3 **):

curl -s --head http://myurl/ | head -n 1 | grep "HTTP/1.[01] [23].." 

Điều này sẽ xuất dòng đầu tiên nếu mã trạng thái được chấp nhận hoặc không có gì nếu không. Bạn cũng có thể đường ống mà đến/dev/null để có được không có đầu ra, và sử dụng $? để xác định xem nó có tác dụng hay không:

curl -s --head http://myurl/ | head -n 1 | grep "HTTP/1.[01] [23].." > /dev/null 
# on success (page exists), $? will be 0; on failure (page does not exist or 
# is unreachable), $? will be 1 

EDIT-s chỉ đơn giản nói với curl để không hiển thị một "thanh tiến trình".

+3

Để làm điều này với phân tích chuỗi ít hơn và để kiểm tra chuyển hướng đến các trang không tồn tại, hãy sử dụng 'curl --silent --head --location --output/dev/null - ghi đè'% {http_code} 'này http://en.wikipedia.org/wiki/tla | grep '^ 2'' – bukzor

+3

Sử dụng --fail: http://stackoverflow.com/a/12199125/376366 –

+0

Kịch bản để tự động xác thực cho một số tệp: https://gist.github.com/igilham/12eb33ab8a86f1e815d2 – IanGilham

-2

wget hoặc cURL sẽ thực hiện công việc. Xem tại đây wget hoặc cURL để biết chi tiết và tải xuống các địa điểm. Cung cấp URL cho các công cụ dòng lệnh này và kiểm tra phản hồi.

+0

Pfff ... tại sao các downvotes (không có lời giải thích, tâm trí bạn) nếu câu trả lời là chính xác, ngắn gọn và thông tin? –

+1

Tôi đã không bỏ phiếu, nhưng nếu tôi phải đoán, đó là vì câu trả lời chỉ có URL là [chán nản] (https://meta.stackexchange.com/questions/8231/are-answers-that-just-contain- link-anywhere-really-good-answers). – zneak

+0

Cảm ơn. TBH, câu hỏi là "Có một lệnh shell scripting mà tôi có thể sử dụng để chỉ kiểm tra xem một trang web có tồn tại không?" và câu trả lời của tôi là "wget ​​hoặc cURL sẽ thực hiện công việc", cộng với các liên kết đến mỗi lệnh và giải thích rằng đáp ứng của các lệnh invocations đó có thể được kiểm tra. Đó không phải là một câu trả lời chỉ URL, bởi bất kỳ biện pháp, và nó đã được thông tin như câu trả lời khác (sửa đổi) đã được ra tại thời điểm đó: https://stackoverflow.com/revisions/2924444/1. Than ôi, rõ ràng là một ngày nghiệp xấu :-) –

17

Sử dụng cURL để lấy mã trạng thái và kiểm tra các giá trị bắt buộc.

status=$(curl -s --head -w %{http_code} http://www.google.com/ -o /dev/null) 
echo $status 
8

Đầu tiên chắc chắn không có uỷ quyền issue.If bất kỳ yêu cầu ủy quyền, bạn cung cấp tên người dùng và mật khẩu .Create một file shell script (checkURL.sh) và dán đoạn mã dưới đây.

Hy vọng điều này sẽ giúp bạn.

checkURL.sh

yourURL="http://abc-repo.mycorp.com/data/yourdir" 

if curl --output /dev/null --silent --head --fail "$yourURL" 
then 
    echo "This URL Exist" 
else 
    echo "This URL Not Exist" 
fi 

của nó làm việc cho tôi trong Nexus và Repository khác.

1

Bạn luôn có thể sử dụng wget; Tôi làm như mã đơn giản hơn.

if [[ $(wget http://url/ -O-) ]] 2>/dev/null 
    then echo "This page exists." 
    else echo "This page does not exist." 
fi 

Sử dụng tùy chọn -O- với wget có nghĩa là nó sẽ cố gắng để sản xuất các nội dung của trang, nhưng chỉ nếu nó tồn tại. Vì vậy, nếu không có bất kỳ đầu ra, sau đó trang không tồn tại. 2>/dev/null chỉ để gửi đầu ra (nếu có) vào thùng rác.

Tôi biết đã quá hạn, nhưng tôi hy vọng điều này sẽ hữu ích.

Các vấn đề liên quan