etingof / snmpsim

SNMP Simulator
http://snmplabs.com/snmpsim/
BSD 2-Clause "Simplified" License
376 stars 119 forks source link

agent simulator --data argument too easy to break #134

Open mmodenesi opened 4 years ago

mmodenesi commented 4 years ago

Collect data

/app $ snmpsim-record-commands --agent-udpv4-endpoint=demo.snmplabs.com  \
--output-file=./data/public.snmprec

serve collected data

Note the trailing / on the data path

/app $ snmpsim-command-responder --data-dir=data/ --agent-udpv4-endpoint=127.0.0.1:116
Using "NullReporter" activity reporting method with params  
Scanning "/home/toto/.snmpsim/variation" directory for variation modules... 
Directory "/home/toto/.snmpsim/variation" does not exist 
Scanning "/usr/local/snmpsim/variation" directory for variation modules... 
A total of 9 modules found in /usr/local/snmpsim/variation 
Scanning "/usr/local/share/snmpsim/variation" directory for variation modules... 
Directory "/usr/local/share/snmpsim/variation" does not exist 
Scanning "/usr/local/lib/python3.7/site-packages/snmpsim/variation" directory for variation modules... 
Directory "/usr/local/lib/python3.7/site-packages/snmpsim/variation" does not exist 
Initializing variation modules... 
ERROR Variation module "redis" from "/usr/local/snmpsim/variation/redis.py" load FAILED: Redis connect parameters not specified 
ERROR Variation module "sql" from "/usr/local/snmpsim/variation/sql.py" load FAILED: database type not specified 
Variation module "writecache" from "/usr/local/snmpsim/variation/writecache.py" loaded OK 
Variation module "multiplex" from "/usr/local/snmpsim/variation/multiplex.py" loaded OK 
Variation module "error" from "/usr/local/snmpsim/variation/error.py" loaded OK 
Variation module "subprocess" from "/usr/local/snmpsim/variation/subprocess.py" loaded OK 
Variation module "numeric" from "/usr/local/snmpsim/variation/numeric.py" loaded OK 
Variation module "notification" from "/usr/local/snmpsim/variation/notification.py" loaded OK 
Variation module "delay" from "/usr/local/snmpsim/variation/delay.py" loaded OK 
--- SNMP Engine configuration 
SNMPv3 EngineID: 0x80004fb805616236633431633533633438013a2820 
  --- Simulation data recordings configuration 
  SNMPv3 Context Engine ID: 0x80004fb805616236633431633533633438013a2820 
  Scanning ".data/" directory for  *.dump, *.MVC, *.sapwalk, *.snmpwalk, *.snmprec, *.snmprec.bz2 data files... 
Traceback (most recent call last):
  File "/usr/local/bin/snmpsim-command-responder", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.7/site-packages/snmpsim/commands/responder.py", line 657, in main
    snmp_context
  File "/usr/local/lib/python3.7/site-packages/snmpsim/commands/responder.py", line 536, in configure_managed_objects
    community_name) in datafile.get_data_files(dataDir):
  File "/usr/local/lib/python3.7/site-packages/snmpsim/datafile.py", line 284, in get_data_files
    if rel_path[0] == SELF_LABEL:
IndexError: list index out of range

Without the trailing slash, all works fine.

I think the problem originates at https://github.com/etingof/snmpsim/blob/master/snmpsim/datafile.py#L248