პროქსი ერთხელ ვარდება. შემდგომი მოთხოვნები წარმატებით სრულდება, მაგრამ მეთვალყურე კვლავ აცხადებს კიდევ ერთ წარუმატებლობას. შეამოწმეთ, დაიმახსოვრა თუ არა სკრიპტმა გუშინდელი გასვლის სტატუსი.

ეს ნიმუში ცვლადს აახლებს მხოლოდ მაშინ, როცა curl ვარდება:

status=0
# Repeated inside a loop:
curl ... || status=$?

პირველი არანულოვანი შედეგის შემდეგ წარმატებული გამეორება status-ს უცვლელად ტოვებს. ის ნული არ ხდება მხოლოდ იმიტომ, რომ curl წარმატებით დასრულდა.

ამის ნაცვლად დატოტვეთ მიმდინარე ბრძანებაზე:

if curl --proxy socks5h://127.0.0.1:1080 --noproxy '' \
    --fail --silent --show-error --connect-timeout 3 --max-time 10 \
    https://health.example/ >/dev/null; then
    echo "check succeeded"
else
    echo "check failed"
fi

მისამართი და დროები საილუსტრაციოა. ეს აშორებს მოძველებულ ცვლადს; ის არ წყვეტს, რომელი აღდგენითი ქმედებაა მიზანშეწონილი.

შეინარჩუნეთ დაკვირვება ვიწრო. მოთხოვნა დამოკიდებულია პროქსიზე, შემდგომ მარშრუტზე, დანიშნულებაზე, TLS-ის შემოწმებასა და HTTP-ის შედეგზე. სამიზნის შეფერხებამ შეიძლება ის ჩააგდოს, მაშინ როცა SOCKS სერვისი ჯანმრთელია. მოულოდნელმა HTTP 200 გვერდმა ასევე შეიძლება გაიაროს მხოლოდ სტატუსზე დაფუძნებული შემოწმება მოსალოდნელი შიგთავსის მიწოდების გარეშე.

აირჩიეთ კონტროლირებადი პასუხის კონტრაქტი და შეინარჩუნეთ წარუმატებლობის ეტაპი. პროქსის გადატვირთვა ყოველ არანულოვან curl-ის შედეგზე შეიძლება ჯანმრთელი სესიები დაარღვიოს, ნამდვილი დანიშნულების პრობლემა კი ხელუხლებელი დარჩეს.

დაკავშირებული სტატიები