Tôi có cảm giác rằng tôi đang thiếu hiển nhiên, nhưng chưa thành công với man [curl|wget]
hoặc google ("http" làm cho cụm từ tìm kiếm xấu đó). Tôi đang tìm kiếm một sửa lỗi bẩn & nhanh chóng đến một trong các máy chủ web của chúng tôi thường xuyên bị lỗi, trả lại mã trạng thái 500 bằng thông báo lỗi. Khi điều này xảy ra, nó cần phải được khởi động lại.Cách đánh giá mã phản hồi http từ tập lệnh bash/shell?
Vì nguyên nhân gốc rễ có vẻ khó tìm, chúng tôi đang cố gắng sửa chữa nhanh chóng, hy vọng rằng sẽ đủ để kết nối thời gian cho đến khi chúng tôi thực sự khắc phục được (dịch vụ không cần tính sẵn sàng cao)
Giải pháp được đề xuất là tạo một công việc cron chạy cứ sau 5 phút, kiểm tra http://localhost:8080/. Nếu điều này trả về với mã trạng thái 500, máy chủ web sẽ được khởi động lại. Máy chủ sẽ khởi động lại sau một phút, do đó, không cần phải kiểm tra xem đã khởi động lại chưa.
Máy chủ được đề cập là bản cài đặt tối thiểu ubuntu 8.04 với chỉ đủ gói được cài đặt để chạy những gì nó hiện đang cần. Không có yêu cầu khó khăn để làm nhiệm vụ trong bash, nhưng tôi muốn nó chạy trong môi trường tối thiểu như vậy mà không cần cài đặt thêm bất kỳ phiên dịch nào.
(Tôi đủ quen thuộc với kịch bản lệnh/tùy chọn để gán mã trạng thái http đến một biến môi trường sẽ là đủ - đây là những gì tôi đã nhìn cho và không thể tìm thấy.)
Tốt - cảm ơn: Tôi đã tìm thấy - ghi-ra, nhưng đã bỏ lỡ --output/dev/null. Khi tất cả nội dung đi kèm với nó, mã phản hồi bị mất trong quá nhiều thông tin, vì vậy tôi chỉ đơn giản là không nhìn thấy nó ... –
Tôi có thể lưu trữ cả mã phản hồi và đầu ra trong các biến riêng biệt không? Tôi muốn echo đầu ra khi mã phản hồi không phải là 200 –
@VaibhavBajpai: Hãy thử điều này: 'response = $ (curl - ghi-ra \\ n% {http_code} --silent --output - servername)' - dòng cuối cùng trong kết quả sẽ là mã phản hồi. –