一个简化的python routerOS api!

pyros-api的Python项目详细描述


派洛斯api

一个简化的python routerOS api!在

Thanks to Social WiFi for their incredible RouterOS-api

pyrosapi是一个简单的python api,用于从RouterOS-api扩展而来的MikroTikRouterOS。
PyPi上的pyros api

为什么是另一个API?

< >我通过社交WiFi找到了RouTeOS API(没有恶意,它们的API很棒!)很复杂,除非你很熟悉routerOS。
虽然我对routerOS有点熟悉,但我仍然需要经常在google上搜索并使用winbox/cli来做一些简单的事情。
最令人尴尬的是,我经常忘记我为实现某件事所做的事情,比如说一天前,如果我删除了或者需要稍微扭曲一下实现相同的逻辑。
这就是api的用武之地。到目前为止,还没有很多函数被简化,但我将致力于此,并将使用更简化的api进行更新。任何贡献都是受欢迎的。在

使用

连接

^{pr2}$

连接选项

pyros_api.RosCall(host,username='admin',password='',port=8728,use_ssl=False,ssl_verify=True,ssl_verify_hostname=True,ssl_context=None,)

参数:

  • host-String-设备的主机名或IP

可选参数:

  • username-字符串-登录用户名-默认“admin”
  • password-字符串-登录密码-默认空字符串
  • port-Integer-TCP-API端口-使用SSL时默认为8728或8729
  • plaintext_login-Boolean-尝试明文登录(对于RouterOS 6.43以后的版本)-默认值False
  • use_ssl-Boolean-是否使用SSL?-默认值False
  • ssl_verify-Boolean-验证SSL证书?-默认值True
  • ssl_verify_hostname-Boolean-验证SSL证书主机名是否匹配?-默认值True
  • ssl_context-Object-Pass在自定义SSL上下文对象中传递。覆盖其他选项。-默认值None

使用SSL

如果要使用SSL,只需将use_ssl指定为True

connection=pyros_api.RosCall('<IP>',username='admin',password='',use_ssl=True)connection.login()

这将自动验证SSL证书和主机名。 修改SSL参数最灵活的方法是使用 ssl_context参数,但对于具有自签名证书的典型用例,可以使用 ^提供{}和{}。在

例如,如果使用自签名证书,您可以(但可能不应该)使用:

connection=pyros_api.RosCall('<IP>',username='admin',password='',use_ssl=True,ssl_verify=False,ssl_verify_hostname=False,)

登录RouterOS v6.43以后的版本

RouterOS v6.43以后的版本现在使用不同的登录方法。 缺点是它以明文形式传递密码。 为了安全起见,我们只在请求使用plaintext_login参数时尝试明文登录。 强烈建议仅在启用SSL的情况下使用此选项。在

pyros_api.RosCall(host,username='admin',password='',plaintext_login=True)connection.login()

执行命令

在所有可用的路由调用后,您可以成功连接所有可用的路由。在

示例

x=connection.get_ppp_secret()print(x)# print list of all ppp secrets from routerOS
# changes password of given ppp secret. e.g.: secret = 'abc1 & password = '1234'x=connection.update_secret_password(secret,password)

创建新的PPP密钥

secret = {
    'c_ident': '',
    'p_pw': '',
    'profile': 'default',
    'service_type': 'pppoe',
    'comment': '',
    'has_suspended': False
 }

密钥字典键值对:

  • c_ident-String-PPP机密名称(例如abc1)-默认空字符串

可选键:

  • p_pw-String-PPP密码-默认空字符串
  • profile-String-PPP secret profile-Default'Default'配置文件
  • service_type-String-PPP特勤服务类型(例如:pptp/any/pppe)-默认pppoe
  • comment-String-PPP secret comment-默认空字符串
  • has_suspended-Boolean-PPP secret创建后的状态(例如:如果为True,则在创建机密之后,PPP secret将被禁用)-默认值False
示例
secret={'c_ident':'abc5','p_pw':'1234','profile':'default','service_type':'pppoe','comment':'This is a dummy comment!','has_suspended':False}connection.add_ppp_secret(secret)# returns True if successfully created

闭合连接:

connection.disconnect()

socialWifi的routerOS api

从socialWifi提供的routerOS api中的所有内容都可以通过调用给定的函数获得。在

api = connection.ros_api_raw()

现在我们可以通过socialWifi从routerOS api访问所有函数。在

示例

api = connection.ros_api_raw()
list_ppp = api.get_resource('/ppp/secret')
print(list_ppp.get())  # prints all ppp secrets

要了解有关如何通过社交WiFi从RouterOS-api访问API的更多信息,请访问他们的repository。在

欢迎投稿!比堪萨斯州。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java我下载的图像不会出现在我应用程序的屏幕上   Netbeans 8.2 Java多行注释使用键盘快捷键添加用户/日期时间   FORKJOIN分支中节点的java jbpm并发执行   Java/Oracle连接性能问题   访问数组元素时发生Java字符串越界异常   java NumberFormat不适用于ModelAndView和HandlerInterceptorAdapter   使用JUNIT的java Android文件操作测试   java有没有一种方法可以将系统关闭按钮设置为javafx按钮?   java如何计算字符串中的大小写字母?   解析Java CSV文件操作   postgresql在MAC上安装PL/Java   带有FlowLayout的java JPanel可以调整自身大小   java Lucene外部文档Id偏离内部索引docId   java如何停止Spring的默认输出?   java使用json库从文本文件中读取多个json对象   java Spring启动时出现MyBatis@MapperScan错误