0

I have aproximately 100 switches that need to be renamed in zenoss and a csv file with the IP address and corresponding name. Is there a way to rename a device from the terminal so that I can knock up a quick script to parse the csv and rename the devices based on the IP address?

Morchuboo
  • 58
  • 1
  • 1
  • 5

2 Answers2

1

Indeed there is. There is a zendmd CLI interface which provides a pythonic way to interact with Zenoss.

$ /usr/local/zenoss/zenoss/bin/zendmd

I'm not 100% sure, but "renaming" devices is probably akin to "moving" them in the devices hierarchy. There are logs of examples here to get you started.

lukecyca
  • 2,205
  • 13
  • 20
  • Recommend you hit #zenoss on irc.freenode.net someone there likely knows exactly how to do this off the top of there head. – SpacemanSpiff Jan 01 '11 at 00:42
1

I came across this while looking for the same solution. I took lukecyca's advice and asked on #zenoss.

The answer is to use zendmd to execute some python, either interactively or write a script to do it.

The following script was suggested by "frooderino" on #zenoos:

#file.csv is just a txt file with oldname,newname on each line
f = open('file.csv').read().split('\n')
print('starting rename')
for i in f:
  sync()
  o = i.split(',')
  d = dmd.Devices.findDevice(o[0])
  print('Current Name: %s' % d.id)
  d.renameDevice(o[1])
  commit()
  print('New Name: %s' % d.id)
print('done renames')

The input file would look like:

oldname1,newname1
oldname2,newname2
etc.

I adapted it slightly to run from a variable rather than a file but it worked just great.

you can run it in the zendmd shell using: execfile("script.py") at the >>> prompt. Alternatively, type it into the shell directly (remember to indent).