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