ytti / oxidized

Oxidized is a network device configuration backup tool. It's a RANCID replacement!
Apache License 2.0
2.79k stars 922 forks source link

Can't collect data from huawei VRP #2808

Closed lucasvmx closed 1 year ago

lucasvmx commented 1 year ago

Version

Steps to reproduce

1) Configure router.db

10.10.50.245:huawei

2) Edit config file

---
username: myuser
password: mypassword
log: ~/.config/oxidized/log
resolve_dns: false
interval: 86400
use_syslog: false
debug: true
threads: 30
timeout: 10
retries: 3
prompt: !ruby/regexp /^([\w.@-]+[#>]\s?)$/
rest: 0.0.0.0:8888
next_adds_job: true
vars:
  auth_methods: ["password","public_key"]
  ssh_port: 55055
groups: {}
models: {}
pid: "/home/oxidized/.config/oxidized/pid"
crash:
  directory: "/home/oxidized/.config/oxidized/crashes"
  hostnames: false
stats:
  history_size: 10
input:
  default: ssh
  debug: false
  ssh:
    secure: false
  ftp:
    passive: true
  utf8_encoded: true
output:
  default: file
  file:
    directory: "/home/oxidized/.config/oxidized/configs"
source:
  default: csv
  csv:
    file: "/home/oxidized/.config/oxidized/router.db"
    delimiter: !ruby/regexp /:/
    map:
      ip: 0
      model: 1
      username: 2
      password: 3      
    gpg: false
model_map:
  huawei: vrp

3) Execute oxidized

sudo docker container start oxidized

Outputs

Crash File

**no implicit conversion of nil into String
/var/lib/gems/3.0.0/gems/oxidized-0.29.1/lib/oxidized/output/file.rb:24:in `join': no implicit conversion of nil into String (TypeError)
    from /var/lib/gems/3.0.0/gems/oxidized-0.29.1/lib/oxidized/output/file.rb:24:in `store'
    from /var/lib/gems/3.0.0/gems/oxidized-0.29.1/lib/oxidized/worker.rb:65:in `process_success'
    from /var/lib/gems/3.0.0/gems/oxidized-0.29.1/lib/oxidized/worker.rb:47:in `process'
    from /var/lib/gems/3.0.0/gems/oxidized-0.29.1/lib/oxidized/worker.rb:16:in `block in work'
    from /var/lib/gems/3.0.0/gems/oxidized-0.29.1/lib/oxidized/worker.rb:16:in `each'
    from /var/lib/gems/3.0.0/gems/oxidized-0.29.1/lib/oxidized/worker.rb:16:in `work'
    from /var/lib/gems/3.0.0/gems/oxidized-0.29.1/lib/oxidized/core.rb:36:in `run'
    from /var/lib/gems/3.0.0/gems/oxidized-0.29.1/lib/oxidized/core.rb:29:in `initialize'
    from /var/lib/gems/3.0.0/gems/oxidized-0.29.1/lib/oxidized/core.rb:4:in `new'
    from /var/lib/gems/3.0.0/gems/oxidized-0.29.1/lib/oxidized/core.rb:4:in `new'
    from /var/lib/gems/3.0.0/gems/oxidized-0.29.1/lib/oxidized/cli.rb:13:in `run'
    from /var/lib/gems/3.0.0/gems/oxidized-0.29.1/bin/oxidized:8:in `<top (required)>'
    from /usr/local/bin/oxidized:25:in `load'
    from /usr/local/bin/oxidized:25:in `<main>'**

Container log

Puma starting in single mode...
* Version 3.11.4 (ruby 3.0.2-p107), codename: Love Song
* Min threads: 0, max threads: 16
* Environment: development
* Listening on tcp://0.0.0.0:8888
Use Ctrl-C to stop
no implicit conversion of nil into String
/var/lib/gems/3.0.0/gems/oxidized-0.29.1/lib/oxidized/output/file.rb:24:in `join': no implicit conversion of nil into String (TypeError)
    from /var/lib/gems/3.0.0/gems/oxidized-0.29.1/lib/oxidized/output/file.rb:24:in `store'
    from /var/lib/gems/3.0.0/gems/oxidized-0.29.1/lib/oxidized/worker.rb:65:in `process_success'
    from /var/lib/gems/3.0.0/gems/oxidized-0.29.1/lib/oxidized/worker.rb:47:in `process'
    from /var/lib/gems/3.0.0/gems/oxidized-0.29.1/lib/oxidized/worker.rb:16:in `block in work'
    from /var/lib/gems/3.0.0/gems/oxidized-0.29.1/lib/oxidized/worker.rb:16:in `each'
    from /var/lib/gems/3.0.0/gems/oxidized-0.29.1/lib/oxidized/worker.rb:16:in `work'
    from /var/lib/gems/3.0.0/gems/oxidized-0.29.1/lib/oxidized/core.rb:36:in `run'
    from /var/lib/gems/3.0.0/gems/oxidized-0.29.1/lib/oxidized/core.rb:29:in `initialize'
    from /var/lib/gems/3.0.0/gems/oxidized-0.29.1/lib/oxidized/core.rb:4:in `new'
    from /var/lib/gems/3.0.0/gems/oxidized-0.29.1/lib/oxidized/core.rb:4:in `new'
    from /var/lib/gems/3.0.0/gems/oxidized-0.29.1/lib/oxidized/cli.rb:13:in `run'
    from /var/lib/gems/3.0.0/gems/oxidized-0.29.1/bin/oxidized:8:in `<top (required)>'
    from /usr/local/bin/oxidized:25:in `load'
    from /usr/local/bin/oxidized:25:in `<main>'

Oxidized log file

D, [2023-05-24T10:38:03.928682 #633] DEBUG -- : node.rb: returning node key 'password' with value 'mypassword'
I, [2023-05-24T10:38:03.928713 #633]  INFO -- : lib/oxidized/nodes.rb: Loaded 1 nodes
D, [2023-05-24T10:38:04.091927 #633] DEBUG -- : lib/oxidized/core.rb: Starting the worker...
D, [2023-05-24T10:38:05.093483 #633] DEBUG -- : lib/oxidized/worker.rb: Jobs running: 0 of 1 - ended: 0 of 1
D, [2023-05-24T10:38:05.093821 #633] DEBUG -- : lib/oxidized/worker.rb: Added / to the job queue
D, [2023-05-24T10:38:05.093845 #633] DEBUG -- : lib/oxidized/worker.rb: 1 jobs running in parallel
D, [2023-05-24T10:38:05.094186 #633] DEBUG -- : lib/oxidized/job.rb: Starting fetching process for  at 2023-05-24 10:38:05 UTC
D, [2023-05-24T10:38:05.094276 #633] DEBUG -- : lib/oxidized/input/ssh.rb: Connecting to 
D, [2023-05-24T10:38:05.094360 #633] DEBUG -- : AUTH METHODS::["password", "public_key"]
D, [2023-05-24T10:38:05.876873 #633] DEBUG -- : lib/oxidized/input/ssh.rb: expecting [/^.*(<[\w.-]+>)$/] at 
D, [2023-05-24T10:38:06.094923 #633] DEBUG -- : lib/oxidized/worker.rb: 1 jobs running in parallel
D, [2023-05-24T10:38:06.680134 #633] DEBUG -- : lib/oxidized/input/cli.rb: Running post_login commands at 
D, [2023-05-24T10:38:06.680191 #633] DEBUG -- : lib/oxidized/input/cli.rb: Running post_login command: "screen-length 0 temporary", block: nil at 
D, [2023-05-24T10:38:06.680208 #633] DEBUG -- : lib/oxidized/input/ssh.rb screen-length 0 temporary @  with expect: /^.*(<[\w.-]+>)$/
D, [2023-05-24T10:38:06.680331 #633] DEBUG -- : lib/oxidized/input/ssh.rb: expecting [/^.*(<[\w.-]+>)$/] at 
D, [2023-05-24T10:38:07.082537 #633] DEBUG -- : lib/oxidized/model/model.rb Collecting commands' outputs
D, [2023-05-24T10:38:07.082606 #633] DEBUG -- : lib/oxidized/model/model.rb Executing display version
D, [2023-05-24T10:38:07.082623 #633] DEBUG -- : lib/oxidized/input/ssh.rb display version @  with expect: /^.*(<[\w.-]+>)$/
D, [2023-05-24T10:38:07.082787 #633] DEBUG -- : lib/oxidized/input/ssh.rb: expecting [/^.*(<[\w.-]+>)$/] at 
D, [2023-05-24T10:38:07.096029 #633] DEBUG -- : lib/oxidized/worker.rb: 1 jobs running in parallel
D, [2023-05-24T10:38:07.485173 #633] DEBUG -- : lib/oxidized/model/model.rb Executing display device
D, [2023-05-24T10:38:07.485228 #633] DEBUG -- : lib/oxidized/input/ssh.rb display device @  with expect: /^.*(<[\w.-]+>)$/
D, [2023-05-24T10:38:07.485380 #633] DEBUG -- : lib/oxidized/input/ssh.rb: expecting [/^.*(<[\w.-]+>)$/] at 
D, [2023-05-24T10:38:07.889464 #633] DEBUG -- : lib/oxidized/model/model.rb Executing display current-configuration all
D, [2023-05-24T10:38:07.889518 #633] DEBUG -- : lib/oxidized/input/ssh.rb display current-configuration all @  with expect: /^.*(<[\w.-]+>)$/
D, [2023-05-24T10:38:07.889634 #633] DEBUG -- : lib/oxidized/input/ssh.rb: expecting [/^.*(<[\w.-]+>)$/] at 
D, [2023-05-24T10:38:08.097127 #633] DEBUG -- : lib/oxidized/worker.rb: 1 jobs running in parallel
D, [2023-05-24T10:38:09.098227 #633] DEBUG -- : lib/oxidized/worker.rb: 1 jobs running in parallel
D, [2023-05-24T10:38:10.099402 #633] DEBUG -- : lib/oxidized/worker.rb: 1 jobs running in parallel
D, [2023-05-24T10:38:11.100545 #633] DEBUG -- : lib/oxidized/worker.rb: 1 jobs running in parallel
D, [2023-05-24T10:38:12.101711 #633] DEBUG -- : lib/oxidized/worker.rb: 1 jobs running in parallel
D, [2023-05-24T10:38:12.407144 #633] DEBUG -- : lib/oxidized/input/cli.rb Running pre_logout commands at 
D, [2023-05-24T10:38:12.407209 #633] DEBUG -- : lib/oxidized/input/ssh.rb quit @  with expect: nil
D, [2023-05-24T10:38:12.414489 #633] DEBUG -- : lib/oxidized/node.rb: Oxidized::SSH ran for  successfully
D, [2023-05-24T10:38:12.414538 #633] DEBUG -- : lib/oxidized/job.rb: Config fetched for  at 2023-05-24 10:38:12 UTC
F, [2023-05-24T10:38:13.103338 #633] FATAL -- : Oxidized crashed, crashfile written in /home/oxidized/.config/oxidized/crash
nota-user commented 1 year ago

Don't you need a username and password in router.db.? ip:model:username:password And if I'm not mistaken model_map: huawei: comware