Έχω ένα CRS125-24G-1S και το χρησιμοποιώ μόνο σαν switch.
Έχω φτιάξει ένα επιπλέον bridge εκτός του βασικού, όπου έχω βάλει σε αυτό δύο θύρες μόνες τους (eth1 και eth6) .
Ψάχνω έναν τρόπο ώστε αν βγάλω το καλώδιο από την eth1, να γίνεται disable η eth6. Και μόλις μπει ξανά το καλώδιο στην eth1 να γίνει ξανά enable η eth6.
Πως μπορεί να γίνει αυτό;
Εμφάνιση 1-7 από 7
-
02-02-23, 23:17 Απενεργοποίηση μιας θύρας όταν βγει το καλώδιο σε άλλη #1
-
02-02-23, 23:30 Απάντηση: Απενεργοποίηση μιας θύρας όταν βγει το καλώδιο σε άλλη #2
Μπορείς να το κάνεις με ένα netwatch.
. . .
:~$
"Anyone can build a fast CPU.
The trick is to build a fast system."
Seymour Cray...
-
03-02-23, 01:20 Απάντηση: Απενεργοποίηση μιας θύρας όταν βγει το καλώδιο σε άλλη #3
Το netwatch από ότι βλέπω, είναι για να κάνει monitor κάποιον host.
Δεν μπορώ να κάνω κάτι τέτοιο έτσι όπως έχω κάνει το συγκεκριμένο bridge.
Θέλω απλά να κλείνει την eth6 όταν βγει το καλώδιο από την eth1 και να την ανοίγει ξανά όταν μπει το καλώδιο στην eth1.
Αν ξέρεις τον τρόπο, μπορείς να τον ποστάρεις;
- - - Updated - - -
Βρήκα την λύση. Διαβάζοντας διάφορα από το forum του Mikrotik, έφτιαξα το παρακάτω script:
Κώδικας:{ :if ([/interface get ether1 running] = false) do={/interface ethernet disable ether6;/log info "ether6 disabled"} :if ([/interface get ether1 running] = true) do={/interface ethernet enable ether6;/log info "ether6 enabled"} }
Η ether1 θα είναι running μόνιμα, θα πέσει πολύ σπάνια. Όσο λοιπόν θα είναι running και το script θα εκτελείται ανά Χ λεπτά, σε κάθε εκτέλεση θα δίνει εντολή να γίνει enable η πόρτα και θα γράφει στο log την ανάλογη ενέργεια. Το ίδιο ισχύει και αν είναι disabled. Το δοκίμασα με χειροκίνητη εκτέλεση του script και κάνει αυτό που περιγράφω.
Δεν θα επηρεάσει κάπως την λειτουργία των θυρών, θα μου γεμίζει όμως τα logs με άχρηστες εγγραφές. Οπότε δεν θα μπορώ να ψάξω κάτι άλλο στα logs. Και αν στήσω τον graylog που σκέφτομαι, θα μου στέλνει συνέχεια ειδοποιήσεις για το enable/disable και όχι όταν πραγματικά θα γίνεται enable/disable.
Υπάρχει κάποιος τρόπος, ώστε να δώσει το disable/enable μόνο την πρώτη φορά που θα πρέπει να κάνει ενέργεια και όχι σε κάθε εκτέλεση του script;
-
03-02-23, 08:39 Απάντηση: Απενεργοποίηση μιας θύρας όταν βγει το καλώδιο σε άλλη #4
Αν τροποποιήσεις το script και αφαιρέσεις τα κομμάτια ;/log info "ether6 disabled"
και ;/log info "ether6 enabled" τότε φαντάζομαι πως δεν θα γράφει καθόλου στο log...
-
03-02-23, 11:05 Απάντηση: Απενεργοποίηση μιας θύρας όταν βγει το καλώδιο σε άλλη #5
Αυτό θα κάνει εν μέρη αυτό που θέλεις.
Από την άλλη δεν ξέρω πόσο λειτουργικό είναι.
Κάθε φορά που θα βλέπει enable την 1 θα εκτελείτε πάντα εντολή enable στην 6.
Δεν ξέρω αν θα έχει κάποια επίπτωση αυτό στα data.
Βάλε ένα Ping να τρέχει στην 6 και δοκίμασε να δεις αν υπάρχουν απώλειες πακέτων.
Εγώ θα το έγραφα κάπως έτσι σε ψευδοκώδικα:
Κώδικας:if (eth1=enable) --{ ---if (eth6=disable) -----{ ------eth6=enable ------log="eth6 enabled" -----} --} else --{ ---if (eth6=enable) -----{ ------eth6=disable ------log="eth6 disabled" -----} --}
. . .
:~$
"Anyone can build a fast CPU.
The trick is to build a fast system."
Seymour Cray...
-
03-02-23, 20:38 Απάντηση: Απενεργοποίηση μιας θύρας όταν βγει το καλώδιο σε άλλη #6
Μια άλλη ιδέα είναι να χρησιμοποιεί global variables όπου θα αποθηκεύει την προηγούμενη κατάσταση του interface. Έτσι όταν δεν υπάρχει αλλαγή δεν θα εκτελεί τίποτε.
-
04-02-23, 19:15 Απάντηση: Απενεργοποίηση μιας θύρας όταν βγει το καλώδιο σε άλλη #7
Καλησπέρα, το παρακάτω κάνει ακριβώς αυτό που θέλεις.
Γράφει στο log, μόνο όταν υπάρχει αλλαγή, όχι κάθε φορά που τρέχεις το script. Οπότε βάλε το scheduler να το τρέχει όσο συχνά θέλεις.
Έχω βάλει τις ethernet που έγραψες 1 και 6, αν θέλεις άλλες, τροποποίησε ανάλογα
Κώδικας::do { :local int1 ether1; :local int6 ether6; :foreach a in=[/interface find name=$int1] do={ :local status [/interface get $a running]; :local e6status [/interface get $int6 disabled]; :if ($status=true && $e6status=true) do={ /interface enable [/interface find name=$int6]; } :if ($status=false && $e6status=false) do={ /interface disable [/interface find name=$int6]; } } }
Bookmarks