因为临考好久都没空更新自己的blog了,在SAE上的因为wordpress的模板有点难用加上钱钱钱的问题,于是自己停用了那个blog,さようなら,SAE。
这个实验将会是一个critical的action,确保了后续行动的可行性。
VyOS实在是一个有点令人无语的系统,基于debian squeeze,现在都出到debian 8了,为何不能选择一个比较新的系统为基础系统?虽然VyOS目前最新版的1.1.7 (Helium)的内核是3.11,比较新的了,但是现在基本上没有squeeze的源,通过官方wiki上的指引也没法进行apt-get update。像VyOS,Cisco IOS这类路由器上的系统,如果官方不提供API,自动化管理是非常困难的,现在都2016年了,网络管理的自动化、集中化已成趋势,所以必须采取合适的行动了。
关键的库:exscript,关于该库的具体指导可以看这里:https://github.com/knipknap/exscript/wiki/Python-API-Tutorial
要求python2.6或2.7,不支持python3,依赖:Python-crypto,Paramiko
demo:
目标是设置vyos的eth1接口:
vyos@vyos:~$ show interfaces Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down Interface IP Address S/L Description --------- ---------- --- ----------- eth0 172.16.77.189/24 u/u hello eth1 - u/u lo 127.0.0.1/8 u/u ::1/128
在安装exscript库的debian8上进行测试:
from Exscript.protocols import SSH2 from Exscript import Account username = raw_input("Enter the router username: ") password = raw_input("Enter the user password: ") address = raw_input("Enter the router address: ") account = Account(username,password) conn = SSH2() conn.connect(address) conn.login(account) def setInterfaces(NAME,TYPE,ADDR): #configure mode conn.execute("configure") #interfaces setting conn.execute("set interfaces %s %s address %s" % (NAME,TYPE,ADDR)) conn.execute("commit") conn.execute("save") conn.execute("exit") #exit conn.close() Name = raw_input("Enter the interfaces name: ") Type = raw_input("Enter the interfaces type: ") Addr = raw_input("Enter the interfaces address(don't forget the netmask): ") print("Start to deal with your input......") setInterfaces(Name,Type,Addr) print("Enjoy VyOS")
这段代码执行时会卡住,但是配置的确生效了,不知道为什么没有返回。我修改了该库SSH2.py的一行代码,问题大概出在设置ip地址后没有数据返回,嘛,设置接口还是让用户自己弄好了
经过我的实验,的确可以通过Exscript实现对VyOS的管理,可以进一步折腾了,不过必须得留到5月后再开始
reference:
https://github.com/knipknap/exscript
http://futilefiles.com/blog/?p=615
http://forum.vyos.net/showthread.php?tid=7974
https://github.com/knipknap/exscript/wiki/Python-API-Tutorial