TECHZEN Zenoss User Community ARCHIVE  

Automate Resetting of IP Address for Device

Subject: Automate Resetting of IP Address for Device
Author: Larry
Posted: 2020-01-13 23:43

Zenoss has a menu command to "Reset/Change IP Address" for a device. We have several devices that change IP addresses on a regular basis. What is the actual command which is doing the "reset"? We want to create a notification to automatically run when this condition is detected.

We are running Zenoss 6.2.1.

Thanks in advance,

------------------------------
Larry
------------------------------


Subject: RE: Automate Resetting of IP Address for Device
Author: Laurent Hemeryck
Posted: 2020-01-14 02:36

Hello Larry,

You could launch a reset command through the API. This is exactly what the Web UI is doing. 

Here is the definition of this command in the DeviceRouter:

resetIp(self, uids, hashcheck, uid=None, ranges=(), params=None, sort='name', dir='ASC', ip='')

source code 

Reset IP address(es) of device(s) to the results of a DNS lookup or a manually set address

Parameters:
  • uids ([string]) - List of device uids with IP's to reset
  • hashcheck (string) - Hashcheck for the devices (from getDevices())
  • uid (string) - (optional) Organizer to use when using ranges to get additional uids (default: None)
  • ranges ([integer]) - (optional) List of two integers that are the min/max values of a range of uids to include (default: None)
  • params (dictionary) - (optional) Key-value pair of filters for this search. Can be one of the following: name, ipAddress, deviceClass, or productionState (default: None)
  • sort (string) - (optional) Key on which to sort the return result (default: 'name')
  • dir (string) - (optional) Sort order; can be either 'ASC' or 'DESC' (default: 'ASC')
  • ip (string) - (optional) IP to set device to. Empty string causes DNS lookup (default: '')
Returns: DirectResponse
Success or failure message
I tested it on one of my devices and here was the payload: 

{
action: "DeviceRouter",
method: "resetIp",
data: [
    {ip: "",
     uids: [
        "/zport/dmd/Devices/Server/Microsoft/Windows/myserver.acme.com"],
     hashcheck: null}],

type: "rpc",
tid: 1}

Kind regards,

------------------------------
Laurent Hemeryck
Monitoring Engineer
FedNot
------------------------------


Subject: RE: Automate Resetting of IP Address for Device
Author: Larry
Posted: 2020-01-14 17:02

Thanks Laurent! I will give that a shot.

------------------------------
Larry
------------------------------


Subject: RE: Automate Resetting of IP Address for Device
Author: Morgan Timney
Posted: 2020-03-02 13:32

We have a few virtual devices that become invisible to the network when they are inactive. We have a global name that resolves to the IP of the currently up/active device. So perhaps similar needs to you. 

I wrote this transform for in the /Status/Ping event class and has been working pretty well

# For hosts with 'powered off' vsphere redunancy, the below updates the IP immediatly following failovers.
# This transaction is blocking, so minimize additions to list.
if evt.device in ('globalname1','globalname2'):
  evt.message = '%s %s' % (evt.message, evt.device)
  import socket, sys
  try:
    DNSIP = socket.gethostbyname(evt.device)  # get the IP address from DNS
    if (device.manageIp != DNSIP):            # if the devices IP doesnt match the DNSIP
      from transaction import commit
      device.setManageIp(DNSIP)               # set the new IP on the device, push and commit.
      commit()
      device.pushConfig()
      commit()
      evt.message += "\nThe IP address was reset to match DNS."  #downgrade the event to informational 
      evt.severity = 2  
  except Exception as e:
    evt.message = "%s %s" % (evt.message, e)​


------------------------------
Morgan Timney
The Southern Company
Birmingham AL
------------------------------


< Previous
Multiple zenhub found "attach zenhub" with 6.3.2-1
  Next
upgrade ISO's
>