# for debugging ... import pdb from pprint import pprint as pp from lxml import etree # for the example ... from exampleutils import * from jnpr.eznc import Netconf as Junos from jnpr.eznc.resources.srx.nat_src_simple import NatSourceSimple from jnpr.eznc.utils import ConfigUtils login = dict(user='******', host='vsrx_cyan', password='******') jdev = Junos(**login) jdev.open() # meta-toolbox the config-utils package onto this object, # this gives us access to: jdev.ez.cu.<functions> jdev.ez( cu=ConfigUtils ) # define a resource manager for simple source-NAT use-cases rmgr = NatSourceSimple( jdev ) # if you want to see the resource properties, you could do: # >>> print NatSourceSimple.PROPERTIES # ['zone_from', 'zone_to', 'match_src_addr', 'match_dst_addr', 'pool_from_addr', 'pool_to_addr'] # define some default properties we'll use:
import pdb from pprint import pprint as pp from lxml.builder import E from lxml import etree # junos "ez" module from jnpr.eznc import Netconf from jnpr.eznc.exception import * jdev = Netconf(user='******', host='vsrx_cyan', password='******') jdev.open() ## now play around with jdev object ...
import paramiko import os, sys from jnpr.eznc import Netconf # local import from uac import UAC if len(sys.argv) < 2: print "you must provide a Junos target hostname" sys.exit(1) # going to use paramiko SSHConfig to retrieve the port parameters for a given # host. Doing this because I tend to use jumphosts to get to devices behind # firewalls/etc. This is a pretty useful technique to illustrate: junos_hostname = sys.argv[1] config_file = os.path.join(os.getenv('HOME'),'.ssh/config') ssh_config = paramiko.SSHConfig() ssh_config.parse(open(config_file,'r')) got_lkup = ssh_config.lookup( junos_hostname ) dev = Netconf(user='******',host=got_lkup['hostname'],port=got_lkup['port']) dev.open() dev.bind(uac=UAC) dev.uac.get_users() print "UAC users:" print dev.uac.usernames