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 Intellij通过方法中的包查找用法   java中VS代码和打包命名的问题   将java CMS功能集成到具有高度动态内容的网站(Lucene/Mysql/Nosql)的策略   oracle的java类强制转换异常。jdbc。驾驶员OracleConnection   字节码向JVM添加上指令   如何在抽象类中执行java方法?   java是否可以在apache访问日志中排除指定的GET参数?(作者:W7开发环境)   java如何获取已安装音频播放器的列表?   尝试向HS学生展示如何使用Java访问MS数据库   使用正则表达式java对给定行中的特定字符串进行计数   java JOOQ Select查询中的Select计数   方法Java,如何从二维双精度数组中找到特定值?   获取图像URL的java正则表达式   java在切换到新的窗口驱动程序后找不到元素