सवाल मिक्रोटिक स्क्रिप्ट में संभालने में त्रुटि


मेरे पास आरबी 4 9 3 जी पर रूटरोस 5.14 है। मुझे लिपि लिखना है, जो लॉन्च करता है

/tool fetch ...

Fetch के निष्पादन के परिणामस्वरूप त्रुटि हो सकती है, यह ठीक है (URL कभी-कभी अनुपलब्ध हो सकता है)। स्क्रिप्ट त्रुटि पर लटका है। क्या इसे अनदेखा करने का कोई तरीका है?


उपाय:

[admin@Mikrotik] >> /system script
0 name=safe-fetch source=
:global done
:global url

/tool fetch $url
:Set done=true

1 name=test source=
:global done
:global url="google.com"

:set done false
:execute safe-fetch
:local counter 0
:while ( $done != true && $counter < 10 ) do={
    :set counter ($counter+1)
    :delay 0.2
    }

if ($done = "true") do={
   :put "Fetch OK"
   } else={
   :put "Fetch ERROR"
   }

चेतावनी: दस्तावेज नहीं किया गया "निष्पादित करें" का प्रयोग किया जाता है।


5
2018-05-23 13:50


मूल




जवाब:


ऐसा लगता है त्रुटि प्रबंधन नहीं है इस तरह की लिपियों में। आपको शायद प्रस्तावित समाधान अपनाना चाहिए यह आदमी:

इसलिए आपके पास 2 स्क्रिप्ट्स हैं, जो एक रन चलाता है और सामान करता है और स्थिति को संभालता है जब कुछ मूल्य अपेक्षित के रूप में प्राप्त नहीं होता है, और अन्य स्क्रिप्ट नौकरी करता है, जो असफल हो सकता है। नतीजतन, यदि दूसरी स्क्रिप्ट विफल हो जाती है, तो पहली बार नौकरी करने के लिए दूसरी स्क्रिप्ट कहा जाता है।


1
2018-05-26 18:12



धन्यवाद, यह काम करता है। मिक्रोटिक स्क्रिप्ट बहुत खराब और कुटिल हैं :( - Selivanov Pavel
"आप 6 घंटे में अपना बक्षीस दे सकते हैं।" - कल तुम्हारा बक्षीस होगा। - Selivanov Pavel
मैंने जोड़ा है: खाली चक्र के साथ प्रोसेसर लोड को कम करने में देरी - Selivanov Pavel


राउटरोस v6.2 के रूप में अद्यतन करें

अब आप एक बना सकते हैं do एक त्रुटि हैंडलर के साथ ब्लॉक करें:

:do {
  /tool fetch $url
  :put "Fetch OK"
} on-error={ :put "Fetch ERROR"};

5
2018-06-21 05:01



अंत में, उन्होंने त्रुटि प्रबंधन जोड़ा। धन्यवाद, @ ओल्ड-प्रो! - Selivanov Pavel