praegune kellaaeg 22.12.2025 00:51:24
|
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
| autor |
|
Dirty Harry
HV Guru

liitunud: 04.09.2002
|
21.12.2025 16:22:35
|
|
|
| Etz kirjutas: |
Ja kas sellel on mingi põhjus, miks sedasi on sul konfitud?
mitte pole:
Minu arust ongi koer sinna maetud, et sul on see poolikult konfitud. :roll:
|
Selles asi jah oligi, tänud. Su konf oli aluseks võetud varasemast postitusest copy-pastega, kus parentid ja kiirused ära muutsin - ja ma ei oska tõesti ütelda, kuidas see parameeter vahelt puudu oli. Müstika.
> /queue tree print stats
Flags: X - disabled, I - invalid
0 ;;; qos: shape upstream
name="queue1" parent=ether1 packet-mark=no-mark rate=85416 packet-rate=60 queued-bytes=0 queued-packets=0 bytes=1103415446 packets=988747 dropped=0
1 ;;; qos: shape downstream
name="queue2" parent=bridge1 packet-mark=no-mark rate=902856 packet-rate=181 queued-bytes=0 queued-packets=0 bytes=895055789 packets=883051 dropped=0 |
|
|
| Kommentaarid: 182 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
1 :: |
146 |
|
| tagasi üles |
|
 |
Etz
HV Guru

liitunud: 27.01.2005
|
21.12.2025 16:44:33
|
|
|
| Dirty Harry kirjutas: |
| Selles asi jah oligi, tänud. |
Juhtub ikka, hea et tööle sai nüüd.
_________________ ...life is random...so am I...
So, there is a fan. Time to grab your sh*t, gentlemen!
|
|
| Kommentaarid: 229 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
194 |
|
| tagasi üles |
|
 |
Dirty Harry
HV Guru

liitunud: 04.09.2002
|
21.12.2025 16:53:24
|
|
|
| Etz kirjutas: |
| Dirty Harry kirjutas: |
| Selles asi jah oligi, tänud. |
Juhtub ikka, hea et tööle sai nüüd.  |
Tänud jah veelkord.
CPU kasutus on küll üsna piiri peal, kuid see on juba teine (või järgmine) teema.
|
|
| Kommentaarid: 182 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
1 :: |
146 |
|
| tagasi üles |
|
 |
Etz
HV Guru

liitunud: 27.01.2005
|
21.12.2025 16:58:05
|
|
|
| Etz kirjutas: |
| maty kirjutas: |
| Etz, ole hea, jaga skripte. Ma uuendan tikke siiani käsitsi, aga võiks küll automatiseerida. |
Mul seal natuke keerukam lahendus, ruuteris mitu partitsiooni ja...ühesõnaga zero touch lahendust üritasin luua, mis suurema ikalduse korral end ka ise recoverdada suudaks.
Eks ma viskan need mingi hetk ülesse, kui mahti leian, kolm skripti on kokku neid.
Üks partitisoondie synciks ja konfi varundamiseks, üks ROS'i updateks ja üks FW updateks. |
Spoiler 
:log info "Checking if partitions have same versions..."
# Step 1: Detect running and active partitions
:local runningPart ""
:local activePart ""
:foreach i in=[/partitions find] do={
:local name [/partitions get $i name]
:local running [/partitions get $i running]
:local active [/partitions get $i active]
:log info ("Detected partition: " . $name . ": running=" . $running . ", active=" . $active)
:if ($running) do={ :set runningPart $name }
:if ($active) do={ :set activePart $name }
}
# Step 2: Declare version variables early
:local raw0 ""
:local raw1 ""
:local v0 ""
:local v1 ""
# Step 3: Abort if not running from part0
:if ($runningPart != "part0") do={
:log error ("Operation aborted: system is running from backup partition (" . $runningPart . ").")
} else={
# Step 4: Extract full version strings
:set raw0 [/partitions get [find name="part0"] version]
:set raw1 [/partitions get [find name="part1"] version]
# Step 5: Extract semantic version between "v" and first space AFTER the "v"
:local vpos0 [:find $raw0 "v"]
:local vpos1 [:find $raw1 "v"]
:local start0 ($vpos0 + 1)
:local start1 ($vpos1 + 1)
# Find the first space after start (not the first space in the whole string)
:local end0 [:find $raw0 " " $start0]
:local end1 [:find $raw1 " " $start1]
# If no trailing space found, use string end
:if ($end0 = -1) do={ :set end0 [:len $raw0] }
:if ($end1 = -1) do={ :set end1 [:len $raw1] }
# Validate indices; if "v" not found, fallback to raw string
:if ($vpos0 >= 0 && $start0 < $end0) do={
:set v0 [:pick $raw0 $start0 $end0]
} else={
:set v0 $raw0
}
:if ($vpos1 >= 0 && $start1 < $end1) do={
:set v1 [:pick $raw1 $start1 $end1]
} else={
:set v1 $raw1
}
# Step 6: Safely parse major.minor.patch without :split
# Find positions of first and second dots in v0
:local dot0a [:find $v0 "."]
:local dot0b -1
:if ($dot0a >= 0) do={ :set dot0b [:find $v0 "." ($dot0a + 1)] }
# Extract m0, p0, x0
:local m0 0
:local p0 0
:local x0 0
:if ($dot0a >= 0) do={
:set m0 [:tonum [:pick $v0 0 $dot0a]]
:if ($dot0b >= 0) do={
:set p0 [:tonum [:pick $v0 ($dot0a + 1) $dot0b]]
:set x0 [:tonum [:pick $v0 ($dot0b + 1) [:len $v0]]]
} else={
:set p0 [:tonum [:pick $v0 ($dot0a + 1) [:len $v0]]]
:set x0 0
}
} else={
:set m0 [:tonum $v0]
:set p0 0
:set x0 0
}
# Find positions of first and second dots in v1
:local dot1a [:find $v1 "."]
:local dot1b -1
:if ($dot1a >= 0) do={ :set dot1b [:find $v1 "." ($dot1a + 1)] }
# Extract m1, p1, x1
:local m1 0
:local p1 0
:local x1 0
:if ($dot1a >= 0) do={
:set m1 [:tonum [:pick $v1 0 $dot1a]]
:if ($dot1b >= 0) do={
:set p1 [:tonum [:pick $v1 ($dot1a + 1) $dot1b]]
:set x1 [:tonum [:pick $v1 ($dot1b + 1) [:len $v1]]]
} else={
:set p1 [:tonum [:pick $v1 ($dot1a + 1) [:len $v1]]]
:set x1 0
}
} else={
:set m1 [:tonum $v1]
:set p1 0
:set x1 0
}
# Step 7: Compare and sync if needed
# Strict inequality guard: if the extracted semantic strings differ, treat as different
:local versionsEqual ($v0 = $v1)
:if ((!$versionsEqual) && ( ($m0 > $m1) || \
($m0 = $m1 && $p0 > $p1) || \
($m0 = $m1 && $p0 = $p1 && $x0 > $x1) )) do={
:log warning ("Partitions have different versions: part0 has " . $v0 . ", part1 has " . $v1 . "")
:log info "Copying contents from part0 to part1..."
/partitions/copy-to part1
# Recheck part1 version after copy
:set raw1 [/partitions get [find name="part1"] version]
:set vpos1 [:find $raw1 "v"]
:set start1 ($vpos1 + 1)
:set end1 [:find $raw1 " " $start1]
:if ($end1 = -1) do={ :set end1 [:len $raw1] }
:if ($vpos1 >= 0 && $start1 < $end1) do={
:set v1 [:pick $raw1 $start1 $end1]
} else={
:set v1 $raw1
}
:log info ("Copy operation completed: part0 has " . $v0 . ", part1 has " . $v1 . "")
} else={
:log info ("Partitions have same version: part0 has " . $v0 . ", part1 has " . $v1 . "")
:log info "Syncing configuration from (part0) to (part1)..."
/partitions/save-config-to part1
:log info "Syncing configuration completed."
}
} |
Spoiler 
:log info "Checking for RouterOS upgrades..."
# Step 1: Get update status
/system package update check-for-updates
:local updateStatus [/system package update get status]
# Step 1.1: Proceed only if new version is available
:if ($updateStatus = "New version is available") do={
:log info ("Upgrade required: " . $updateStatus . ".")
# Step 2: Detect running partition
:local runningPart ""
:foreach i in=[/partitions find] do={
:if ([/partitions get $i running]) do={
:set runningPart [/partitions get $i name]
}
}
# Step 2.1: Abort if not running from part0
:if ($runningPart != "part0") do={
:log error ("Upgrade aborted: running from backup partition (" . $runningPart . ").")
:return
}
# Step 3: Sync part0 and part1
:log info "Performing config backup..."
/system backup save name=auto-backup
:log info "Config backup completed."
# Step 5: Sync partitions
/system/script/run sync-partitions
# Step 6: Install update (auto-download + reboot)
:log info "Installing RouterOS update..."
/system package update install
} else={
# Log status and sync partitions
:log info ("No upgrade required: " . $updateStatus . ".")
/system/script/run sync-partitions
} |
Spoiler 
# Step 1: Get RouterOS and firmware versions
:local rosVer [/system package get routeros version]
:local fwVer [/system routerboard get current-firmware]
# Step 2: Compare and reboot only if firmware is older than ROS version
:if ($fwVer < $rosVer) do={
:log warning ("Firmware (" . $fwVer . ") is older than RouterOS (" . $rosVer . "). Rebooting to apply firmware upgrade...")
/system reboot
} else={
:log info "Firmware is up to date or newer. No upgrade needed."
} |
Oma seadmeid, kodus uuendan endiselt käsitsi.
_________________ ...life is random...so am I...
So, there is a fan. Time to grab your sh*t, gentlemen!
|
|
| Kommentaarid: 229 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
194 |
|
| tagasi üles |
|
 |
RassK
HV Guru

liitunud: 17.01.2007

|
|
| Kommentaarid: 116 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
101 |
|
| tagasi üles |
|
 |
skyTronic
Kreisi kasutaja
liitunud: 01.09.2004
|
21.12.2025 20:48:36
|
|
|
| Ansible playbooks üle SSH
|
|
| Kommentaarid: 49 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
48 |
|
| tagasi üles |
|
 |
filx
HV kasutaja

liitunud: 12.09.2006
|
22.12.2025 00:04:31
|
|
|
| jaakjaak22 kirjutas: |
HomeAssistanti saab juba praegu kerge vaevaga ruuteris jooksutada. |
Chateau seeria ja mina ei ole Home Assistanti tööle saanud. On kusagil parem juhis kui Mikrotiki enda wiki?
|
|
| Kommentaarid: 50 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
44 |
|
| tagasi üles |
|
 |
jaakjaak22
HV kasutaja
liitunud: 28.02.2012
|
22.12.2025 00:16:18
|
|
|
Üks saksa härra on aastaid teinud omale kasulikke skripte igaks elujuhtumiks, ma kasutan sealt mitmeid: https://github.com/eworm-de/routeros-scripts siin õpetas ise ka, kuidas kasutada: https://www.youtube.com/watch?v=B9neG3oAhcY
Lisaks, viimasel paaril kuul on AI-vahendid suure sammu edasi hüpanud, nii et tasub sellele ka tekstilist backuppi näidata ja küsida, kas võiks midagi paremini-ägedamini-teisiti olla või kuidas midagi ringi teha. Vastuste pädevuse üle otsustad ikka ise.
|
|
| tagasi üles |
|
 |
|
| lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|