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?


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.

| improve this answer | |
  • 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 1 '11 at 0:42

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:
  o = i.split(',')
  d = dmd.Devices.findDevice(o[0])
  print('Current Name: %s' % d.id)
  print('New Name: %s' % d.id)
print('done renames')

The input file would look like:


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).

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.