Профілі були даними без виконавця. Тепер ланцюг замкнено: черга в БД → диспетчер у AgentService → зонд по SSH/Telnet → вивантаження стрімом → звірка sha256 і дедуплікація. Агент (internal/ncmx): - усе побудовано навколо пошуку промпту: у консолі немає ані коду завершення, ані довжини відповіді - промпт шукається лише в хвості 512 байтів, інакше "banner motd #" обривав би збір на середині конфігу - дедлайн на паузу між байтами, а не на всю операцію: збір із шасі триває хвилини, а тиша означає завислий пристрій або хибний regex - ключі SSH обладнання не звіряються свідомо: залізо міняє їх з кожною прошивкою, і known_hosts на сотні пристроїв означав би не збирати конфіги зовсім Сервер: черга ncm.jobs із FOR UPDATE SKIP LOCKED (два екземпляри не надішлють одне завдання двічі), диспетчер, прибирання завислих. Знайдено живим прогоном: - сервер ігнорував поле encoding: агент стискав gzip і рахував sha256 від оригіналу, сервер рахував від стиснених байтів і відхиляв кожен бекап. Поле в контракті з Етапу 2, реалізації не було — інтеграційний тест користувався "none" і повз дірку проходив - промпт обрізався не по рядку: шаблон [>#]\s*$ ловить лише символ, і в конфізі лишалось ім'я пристрою окремим рядком - у конфіг потрапляли escape-послідовності bash і подвоєні \r\r\n від PTY: 295 байтів / 12 рядків замість 286 / 10. Після виправлення — 285 / 10, різниця лише у фінальному переводі рядка Живий прогін проти стенду: success, конфіг 285 байтів, повторний збір — unchanged без другої версії. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
21 lines
603 B
Modula-2
21 lines
603 B
Modula-2
module github.com/netpulse/netpulse/agent
|
||
|
||
go 1.25.0
|
||
|
||
require (
|
||
github.com/gosnmp/gosnmp v1.42.1
|
||
github.com/netpulse/netpulse/gen/go v0.0.0
|
||
golang.org/x/crypto v0.55.0
|
||
golang.org/x/net v0.57.0
|
||
google.golang.org/grpc v1.83.0
|
||
google.golang.org/protobuf v1.36.12
|
||
)
|
||
|
||
require (
|
||
golang.org/x/sys v0.47.0 // indirect
|
||
golang.org/x/text v0.41.0 // indirect
|
||
google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect
|
||
)
|
||
|
||
// Згенерований із proto код лежить у репозиторії поруч.
|
||
replace github.com/netpulse/netpulse/gen/go => ../gen/go
|