แขแแแแแแขแแแธแแถแแแแแพแแถแแแถแแฝแ Junos PyEZ - "Python microframework แแแแขแถแ แฑแแแขแแแแแแแแแแแแ แแทแแแแแแแแแแแแแแทแแแแแงแแแแแแแแแแแแพแแแถแ Junos OS" แแแแแแแแแแแแแทแแแแ แแทแแแถแแแแแแแแแแ แขแแแธแแแแแแแแถแแแแแแพแแ แผแแ แทแแแแ แแถแแแแแแแแแแแแธแแแแแแถแแแทแแแแแถแแ แแแแปแแขแแแแแแแแแแถแแแแแแ แแถแ แแแพแ - แแถแแแแ Python แแทแแแถแแแถแแแแแแแแแแแแแแทแแแแแแแแแถแแแแถแแแแแแผแแแแแแแถแ แฌแแถแแแแแถแแแแแแผแแแถแแแแแแแแ แแพแงแแแแแแแแแแแแพแแแถแ Junos OS แ แแแแแพแแแแแถแแแฝแแแแแ แผแแแแแถแแถแแแแถแแแแ Python + Junos PyEZ แแแแแแแผแแแถแแแแแพแกแพแแแแแแถแแแแงแแแแแแแถแแแแแปแแแถแแ แผแแแ แแแแปแแแถแแถแแแแแแแแแแแทแแธ Python แแทแแแถแแแถแแแแแฝแแแแแถแแแแแพแแแแถแแแแแแแถแแแ Junos PyEZ แแแแแทแแแแแแผแแฑแแแแถแแ แแแแแแนแแขแแแแแแแถแแแ Junos OS แ
แแแแแแแ
แแแแแแแแแแแแแแถแแแ ipv4 แฅแแแทแแแแแแแแแแถแแแแแแทแแแแทแแแแแแแแปแแ แแปแแ แแแแแแแแทแแทแ แแแแแแแแแแแแถแแแแแบแฅแแแทแแแแแแแบแขแแแแแแถแแแแแถแแปแขแแแธแแถแแ แแแแปแแแแแผแแแ แแพแแปแแแถแแแแพแแแฝแแถแแแแแแแแแแแแแแพแแแถแ Junos OS แ
ะ ะตะฐะปะธะทะฐัะธั
Python + Junos PyEZ แแแแแธแแถแแถแแแถแแแแแฝแแฑแแแแแแพแแถแแถแแแแ paramiko แแทแ ssh.exec_command แแแแแ แแถแแแแแแ แขแแแแแนแแแแแผแแแแแแแแ แแถแแแแแแแแแแทแแธแแถแแแแแแแแแแแแแแแถแแงแแแแแ netconf แแ แแพแงแแแแแแแแแแแแปแแแแแพแแถแแแแแแแแแทแ Netconf แแแแพแแถแแแถแแฝแแแแแแแแนแแแถแแแแแแถแแ แ แแผแแแแแแแแ RPC แแธแ แแแแถแ แ แพแแแแแพ XML แแแแปแแงแแถแ แแแแแแ แแพแแแแธแแแแแแแแแแแถแแแแแแถแแแฝแแแถแแ
แแถแแแแกแพแแแแแแแ แแ แปแแแแแแแแแแ Junos PyEZ แแธ PyPI แแแแผแแแถแแแแแพแแแแแถแแแแแแแแถแแผแ แแถแแแแแแแ
$ pip install junos-ezncแขแแแแแแขแถแ แแแกแพแแแธแแถแแถแแแแถแแแแแแแแแแแแ แแพ GitHub แแแแแแแพแแถแแแแแแแแถแแถแแแแแแแ
$ pip install git+https://github.com/Juniper/py-junos-eznc.gitแแทแแแแแแพแแแฝแแแแแแแแแแแแถแแแแ
$ pip install -r requirements.txt แแถแแแแแแแแถแแแแแนแแแแกแพแแแแแแถแแแแแแแแถแแแแธแแแแแแแแ แ แพแแ แถแแแถแ แแแแแแถแแแแแแแทแแแแแทแแถแแ แแ แแแแปแแแแแแแแแแแแแปแ แแแแแผแแแถแ.txtแ แแถแแแแแธแแแแปแแแแแ แแแแแ แปแแแแแแแแแแปแแแแแผแแแถแแ แแแขแปแแแแแ แถแแแ แแแแแแแแแแแแแแธแแ
junos-eznc
netaddrแแแแแแธแโแแถแโแแแแถแแแพแโแแโแแแแแโแขแแแโแแแแพโแแ แแ แปแแแแแแโแแแแปแโแแแแแแแแ แขแแแโแขแถแ โแ แผแโแแแแแโแแแแแโแขแแแโแแแแพโแแแแแโแแแโแแแแพโแแ show_route.py -u getpass.getpass แแโแแถแแแโแแแแแถแแโแแธ stdin แแผแ แแแแโแแถแแแโแแแแแถแแโแแนแโแแทแโแแ โแแแแ แแ แแแแปแแแแแแแแแแ แแพแแแแธแแแแถแแแแ แงแแแแแ แขแแแแแนแแแแแผแแแแแ แผแแแแแแแแแถแแแธแ แฌแขแถแแแแแแถแ IP แแแแแแถแแแแแ แแ แแแแแแแผแแแถแแแฝแแ แแทแแแแแแแแถแแแขแแแแแแ แถแแแถแ แแแแแแถแแแแถแแขแแปแแแแถแแแ แแพแงแแแแแแแแแผแแแถแแแแฝแแ
Junos PyEZ แแถแแแแแแถแแแแแถแแแแ แงแแแแแแแแแแแแพแแแถแ Junos OS แแแแแแแพแแปแแแผแ telnet แฌ netconf แแถแแแแ ssh แ แขแแแแแแแทแแถแแแแถแขแแแธแแแแแพแแ แปแแแแแแแ
แแพแแแแธแแแแถแแแแ แงแแแแแ แแผแแแแแพแแแแถแแแงแแแแแแแแแแผแแปแ jnpr.junos
with jnpr.junos.Device(host=router,
user=args.name,
passwd=password) as dev:แแแแพแแแแผแแแถแแแแแพแกแพแแแแแแถแแแแแแแแแแแผแแแแแแแแถแแแแ แแถแแแแแแแแแ แแถแแแแแแถแแ แ แแถแแแธแแทแแทแแธแแธแ แแแแถแ แฌแแถแแ แ แแถแแแธแแทแแทแแธแแธแ แแแแถแ แแถแแแแแแถแแแแแฝแแแถแแ
data = dev.rpc.get_route_information()แแถแแแแแแแแถแแแแแแแแแแถแแ แแพ Junos OS
user@router> show route | display xmlแแแแแแแแแ rpc แแ แ แปแแแแแ แแแแแแถแแแแแแแแถ แแพแแแแฝแแแถแแแแแถแแแแแพ แ แพแแขแถแ แแแแผแแแแแแถแแถแแฝแแแนแแแแแแแแแแทแแธแแถแแแแแ RPC แแแแแทแแธแแแแแพแแขแถแ แแแแแแแแแแแแแแแแแแแแแแแแ แถแแแขแถแแแแแแแ แแถแแฝแแฑแแแแแแแแแแถแแแแถแแถแแแแแแแแแแแแแแแแถแแแแถแแแแแแแแแแถแแแแแพแแบแแปแแแธแแแแแแแทแแธแแถแแแแแ แแแแแบแขแแแแแฝแแแแแแแฝแแแ แแแแแถแแแแแแแแถแแผแแแแแแแ
user@router> show route | display xml rpc
<rpc-reply >route_list = data.xpath("//rt-destination/text()")แแแแแแแแแแ แแแแแแแผแแแถแแแปแแแแแแแแแทแแแปแแแฝแแแแ แแพแแแแธแแปแแฑแแแแแแพแแแ แแถแแแแแแแแแแกแพแแแทแ แแแแแทแแแพแ แถแแแถแ แแแแแผแแแทแแทแแแแแพแแแแแแถแแแแแแแแแแแแแธแขแแแแแแแแแแแแแแแนแแแฝแ แ แพแแ แแถแแถแแแแแแแแแแปแแแถแแแทแแถแแแถแแแแแแแแแแแแแแปแแแแแปแแแแแพแแแแพแแนแแแแแแแผแแแถแแแแ OSPF แแผแ แแแแแแแแแถแแแแแแแแแแแแแแถแแถแแถแแแแแแพแแแแแปแแแถแแแแแถแแแแแแผแแแแแพแแแแแทแ แแแแแฝแ แแพแแแแธแแถแแแแแแแแแแแแแแถแแแแพแแแถแแแแแแแแแแแธแ
data = dev.rpc.get_ospf_route_information()แฅแกแผแแแแแแผแแแแแกแแแแพแแแแแนแแแถแแแ while loop
แแ แแแแ แถแแแแแแพแ แขแแแแแแแพแแแแถแแแแนแแแแแผแแแถแแแแแพแฑแแแแแแ แผแแแแแแถแแแแแแแแถแแแแถแแ แแทแแแทแแแพแแแธแแธ octets แแธแแแแแถแแแแแแแแถแแแแแผแ แแแแถ แแแแแบแ แถแแแถแ แแแพแแแแธแแแแแแแฝแแแแแแแแแ แแแแปแแแทแแแถแแทแแ แผแแ แทแแแแแถแแขแแปแแแแแแแแถแแแแแแถแแแแแแแแแแทแแทแ แแแแ แแทแแแฝแแแแแแแแแแแแแ แแแปแแแแแแ แผแแแแแแแแแแแแ แแแแปแแแทแแแถแแแแแพแแแแแแแแแแถแแแแแแพแแแถแแแแแแแ แแแแแถแแแแ แแธแแแแแธแแแแแแแแแแแแแถแแแ route_list แแแแแแแพแขแแแแแแแแถแแแทแแแพแแแธแแธ octets แแแแปแแแแแพแแแพแแแแแแถแแแแแแแแแแปแแ แถแแแขแถแแแแแแ
tmp = re.search(r'^%sS*' % subnet_search, route_list[i])แแถแแแแ IPNetwork แแแผแแปแ netaddr แแแแปแแแแฝแแแถแแแแแแถแแแแแแแปแแแแแแแแแถแแแแแธแขแถแแแแแแถแ ipv4
range_subnet = netaddr.IPNetwork(tmp.group(0))แแแแแแแพ IPNetwork แแแแปแแแแฝแแแถแแขแถแแแแแแแถแแแถแ แแแพแแแธแแแแแถแแแแแแแแ แผแแแแแขแแแแแแแพแแแแถแแแแถแแฝแแแแถแแแแปแ แแทแแแแแแพแแแแแแธแขแถแแแแแแถแแแถแแแขแแแแธแแฝแแแแแแแแแถแแแแถแแแแแแแแแแแถแแฝแแแแแแธแขแถแแแแแแถแแแแแแถแแแแถแแแ
for i in set(net_list).difference(set(busyip)):
freeip.append(i)แแแแปแแแแแ แถแแแแแแธแแแแแแแแแขแถแแแแแแถแแฅแแแทแแแแแแแแแปแแแแแแแแแถแแแแแถแแแ
print(netaddr.IPSet(freeip))แแถแแแแแแแแแแแถแแแแแแธแแแแแแแ แแถแแแแแแแพแแปแแแถแแแแแแพแแถแแแแแแแ แแแผแแแ ex4550, ex4600
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import argparse
import getpass
import netaddr
import re
import sys
import jnpr.junos
parser = argparse.ArgumentParser()
parser.add_argument('-u', '--user',
action='store',
dest='name',
help='Enter login from tacacs if it differs from the '
'username in the system.')
args = parser.parse_args()
if not args.name:
args.name = getpass.getuser() # Return the โlogin nameโ of the user.
router = input("Full routers name: ")
password = getpass.getpass("Password: ")
try:
# Authenticates to a device running Junos, for get information about routs
# into xml format and selects by tag.
route_list = []
with jnpr.junos.Device(host=router,
user=args.name,
passwd=password) as dev:
data = dev.rpc.get_route_information()
route_list = data.xpath("//rt-destination/text()")
except (jnpr.junos.exception.ConnectRefusedError,
jnpr.junos.exception.ConnectUnknownHostError) as err:
print("Equipment name or password wrong.")
sys.exit(1)
while True:
subnet = input("Net with mask: ")
subnet_search = input("Input no more three octet: ")
# Gets a list of busy IP addresses from the received subnets.
busyip = []
for i in range(len(route_list)):
tmp = re.search(r'^%sS*' % subnet_search, route_list[i])
if tmp:
range_subnet = netaddr.IPNetwork(tmp.group(0))
for ip in range_subnet:
busyip.append("%s" % ip)
range_subnet = netaddr.IPNetwork(subnet)
# Gets list ip adresses from subnetworks lists.
net_list = []
for ip in range_subnet:
net_list.append("%s" % ip)
# ะกomparing lists.
freeip = []
for i in set(net_list).difference(set(busyip)):
freeip.append(i)
print(netaddr.IPSet(freeip))
request = input("To run request again enter yes or y, "
"press 'enter', complete request: ")
if request in ("yes", "y"):
continue
else:
print('Bye')
break
แแแแแ: www.habr.com
