Stormshield网络安全设备的SSL API客户端

stormshield.sns.sslclient的Python项目详细描述


python sns api

StormShield网络安全设备SSL API的Python客户端。

注意:本模块需要python2.7或python3.3

API使用

fromstormshield.sns.sslclientimportSSLClientclient=SSLClient(host="10.0.0.254",port=443,user='admin',password='password',sslverifyhost=False)response=client.send_command("SYSTEM PROPERTY")ifresponse:model=response.data['Result']['Model']version=response.data['Result']['Version']print("Model: {}".format(model))print("Firmware version: {}".format(version))else:print("Command failed: {}".format(response.output))client.disconnect()

命令结果

命令结果以文本、XML或Python结构格式提供:

>>>response=client.send_command("CONFIG NTP SERVER LIST")>>>print(response.output)101code=00a01000msg="Begin"format="section_line"[Result]name=ntp1.stormshieldcs.eukeynum=nonetype=hostname=ntp2.stormshieldcs.eukeynum=nonetype=host100code=00a00100msg="Ok">>>print(response.xml)<?xmlversion="1.0"?><nwscode="100"msg="OK"><serverdret="101"code="00a01000"msg="Begin"><dataformat="section_line"><sectiontitle="Result"><line><keyname="name"value="ntp1.stormshieldcs.eu"/><keyname="keynum"value="none"/><keyname="type"value="host"/></line><line><keyname="name"value="ntp2.stormshieldcs.eu"/><keyname="keynum"value="none"/><keyname="type"value="host"/></line></section></data></serverd><serverdret="100"code="00a00100"msg="Ok"></serverd></nws>>>>print(response.data){'Result':[{'name':'ntp1.stormshieldcs.eu','keynum':'none','type':'host'},{'name':'ntp2.stormshieldcs.eu','keynum':'none','type':'host'}]}

data属性的键不区分大小写,response.data['Result'][0]['name']response.data['ReSuLt'][0]['NaMe']将返回相同的值。

结果令牌也可以通过response.parser.get()方法获得,如果令牌不存在,则接受默认参数返回。

>>>print(response.output)101code=00a01000msg="Begin"format="section"[Server]1=dns1.google.com2=dns2.google.com100code=00a00100msg="Ok">>>print(response.data['Server']['3'])Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>File"/usr/local/lib/python3.7/site-packages/requests/structures.py",line52,in__getitem__returnself._store[key.lower()][1]KeyError:'3'>>>print(response.parser.get(section='Server',token='3',default=None))None

文件上传/下载

可以通过在配置命令末尾添加重定向到带有“>;”或“<;”的文件来下载或上载文件。

>>>client.send_command("CONFIG BACKUP list=all > /tmp/mybackup.na")100code=00a00100msg="Ok"

snscli

snscli是一个python cli,用于在StormShield网络安全设备上执行配置命令和脚本。

  • 可以在节/ini或xml之间选择输出格式
  • 在命令末尾添加< upload> download即可进行文件上载和下载
  • 客户端可以使用--script选项执行脚本文件。
  • 允许对#
  • 进行注释

$ snscli --host <utm>

$ snscli --host <utm> --user admin --password admin --script config.script

关于ssl验证:

  • 对于到新设备的第一个连接,可以使用--no-sslverifyhost选项绕过ssl主机名验证。
  • 要使用默认证书连接到已知设备,请使用--host <serial> --ip <ip address>验证对等证书。
  • 如果安装了自定义ca和证书,请使用--host myfirewall.tld --cabundle <ca.pem>
  • 对于客户端证书身份验证,所需的格式是一个PEM文件,其中连接了证书和未加密密钥。

代理

库和^ {CD5>}工具支持HTTP和SOCKS代理,使用^ {CD16>}选项。

构建

$ python3 setup.py sdist bdist_wheel

安装

来自PYPI:

$ pip3 install stormshield.sns.sslclient

来源:

$ python3 setup.py install

测试

警告:某些测试需要远程sns设备。

$ PASSWORD=password APPLIANCE=10.0.0.254 python3 setup.py test

从源文件夹运行snscli而不安装:

$ python3 stormshield/sns/cli.py --help

链接

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

推荐PyPI第三方库


热门话题
java为什么数据库中具有“读取”角色的用户不能列出集合?   在Java中使用带有反应式包装器的非阻塞IO逐行读取文件   java当`!`时,什么可以简化表达式应用于`&`或`||`   java Jasperreports报告了四组多个动态图像   java我想将单个字符串的ascii值存储在一行中,如何使用getbyte函数实现这一点   javascript如何在java中写入文件时响应帖子?   新用户注册后java登录失败| Weblogic安全   java中的多线程和同步   java在FOR循环中使用ParseObject   Java货币数字格式   java模拟单例类   java编写大量数据时,部分数据会丢失/当所有数据都存在时,写入过程非常缓慢   java如何处理复合对象的所有子对象?   java如何获得相交集的大小?   我需要在java中的不同源代码中对broadcost Httprequest进行测试   java我想在MainActivity中添加SpreadsheetWebService,而不需要从其他类调用它   安卓 Java是否有NFC API用于标准机器?