与Synology NAS设备交互的PythonAPI包装器和工具集。
synotools的Python项目详细描述
synotools
python api包装器和工具集,用于使用diskstation manager(dsm)与概要nas设备交互。存储库提供了两种不同的工具集来与NAS通信:
- api:通过python包装简化dsm查询。
- 命令系统:通过设备中托管的sh脚本,但从任何能够运行
fabric
和python的unix系统调用。
API需要下面一节中描述的有效凭据。
开始
使用pip安装软件包:
python -m pip install synotools
在~/.synotools/credentials中创建凭据文件
:
# Device access credentials
SYNOLOGY_IP=your-ip
SYNOLOGY_PORT=your-port
SYNOLOGY_USERNAME=your-username
SYNOLOGY_PASSWORD=your-password
# Deluge service credentials
DELUGE_IP=deluge-ip
DELUGE_PORT=deluge-port
DELUGE_USERNAME=deluge-username
DELUGE_PASSWORD=deluge-password
# VPN settings
VPN_ID=vpn-config-id
VPN_NAME=vpn-config-name
VPN_PROTOCOL=vpn-protocol
可以在env.sample
上找到所有字段的列表,此文件可以用作凭据的模板。一旦填充并完成设置后,您将能够运行命令:
python <installation-folder>/commands/<command-name> <args>
有关可用命令的更多信息,请阅读使用工具部分!
设置
凭证
有效凭据应存储在本地,允许工具通过本地网络连接到设备。在凭证文件中填写以下凭证:
- IP:例如
192.168.1.35
- 端口:
5000
用于http,或5001
用于https - 用户名:与通常用于通过Web界面登录的用户名相同
- 密码:对应密码
找出您的本地IP将取决于您的操作系统、路由器配置和其他因素。有关如何获取或设置设备IP的详细信息,请参阅DSM的用户指南。强烈建议为您的NAS设置一个静态IP,以便命令和ssh访问能够可靠地工作,而无需更新IP。
注意:出于安全原因,请记住不要共享您的个人凭据文件或密码!不要提交到存储库,也不要与任何人共享。该文件应该是私有的,并安全地存储在本地。
ssh密钥
synotools
使用fabric
(内置于paramiko
之上)来处理ssh连接。对凭据配置和ssh密钥进行了某些假设。建议在默认so的ssh位置设置ssh密钥。尽管本指南主要关注于伊苏,可以帮忙。请确保将私钥存储在默认位置(对于UNIX系统,~/.ssh
),并记下公钥内容或位置,因为下一步将需要它。
启用NAS ssh访问
默认情况下,在设备中禁用终端访问。按照官方支持中的说明启用它
然后,需要将公钥添加到设备中的授权密钥,并设置正确的权限。这本方便的指南可能会有所帮助。
在NAS中安装雨淋
download命令远程使用druge,因此必须在尝试之前安装并配置它。
1-下载并安装synocomunity。
2-Deluge的身份验证配置必须包含用于远程连接的用户、密码和权限级别。
3-洪水服务器的主机IP和端口。默认值分别为127.0.0.1
和58846
。
4-设置好这些变量后,将它们复制到凭证
文件中的相关字段。
为了设置洪水,您可以:
a)使用雨淋的默认用户名:雨淋
和密码雨淋
,或
b)创建您自己的用户,如这里所述
注意:如果要创建用户,则NAS中的文件夹可能与上述指南不同,具体取决于您的系统。身份验证文件可能位于/var/packages/deluge/target/var
中,例如。
VPN客户端配置
NAS可以通过VPN网络接口进行连接,需要先设置VPN网络接口。本文档解释了该过程。一旦vpn配置文件设置并至少使用一次,就可以从配置中检索vpn配置并将其复制到凭据
文件中。这些详细信息可从
vpnc_last_connect
获取,如此处解释
使用工具
这些工具中当前包含的大多数命令都是sh脚本,预期将托管在nas中,其中sh或python脚本将在本地运行。尽管大多数脚本都可以直接从python运行,但是已经添加了许多.docker脚本,这样任何东西都可以在一个命令中运行。
NAS脚本安装
在尝试运行任何其他脚本之前,此步骤是必需的,因为它们依赖于先安装的脚本!
./install.docker <your-ssh-key-name>
# e.g. ./install.docker paulo_rsa
在synotools/scripts
中收集所有脚本,调整它们的大小并将它们部署到nas~/.scripts
文件夹中。用户来自凭证
文件。无需附加身份验证即可连接到NAS。
注意:将ssh密钥添加到dockerinstall
image意味着出于安全原因,此映像不应公开共享(即推送到docker repo)。
下载Torrent
将Torrent添加到NAS中的"洪水",将其下载到默认下载文件夹。
pythonsynotools/command/download.py"<your-torrent>"# e.g python synotools/commands/download.py "https://torrents.linuxmint.com/torrents/linuxmint-17-cinnamon-32bit-v2.iso.torrent"# e.g python synotools/commands/download.py "magnet:?xt=urn:btih:336165b4134e3754fa6996d881a7e7b55a40eb68&dn=archlinux-2019.06.01-x86_64.iso&tr=udp://tracker.archlinux.org:6969&tr=http://tracker.archlinux.org:6969/announce"
连接到VPN
检查NAS是否通过VPN连接,如果没有,请连接。
pythonsynotools/commands/vpn_connect.py
兼容性
使用Synology的DS218J模型进行测试。
开发
这个软件是在linux mint中创建和维护的,但是开发人员应该能够使用几乎任何unix平台做出贡献。在开始之前,需要安装和配置以下工具:
- 码头工人 < G >它
依赖关系
有两种依赖关系:
- python包:通过
pip3
自动处理。它们包含在需求文件中,对于工具本身,requirements.txt
,对于所有外围开发工具,requirements-dev.txt
。 - 其他依赖项:为了防止开发人员的系统混乱,所有不能与包管理器一起安装的外部依赖项都应该位于
dependencies
文件夹中。提供脚本以自动安装这些程序。
开发环境设置
1-在您选择的位置克隆基本存储库。
git clone git@github.com:DazEdword/synology-toolset.git
2-配置凭据
文件和ssh密钥,如入门部分中所述
3-确保所有脚本都是可执行的。
cd </path/to/project/root>
find . -type f -iname "*.sh" -exec chmod +x {} \;
find docker/scripts/ -type f -exec chmod +x {} \;
运行测试
已经设置了几个docker脚本来明确运行测试的子集,同时处理所有必需的依赖项。使用这些脚本Docker应该为您处理一切:
# Unit tests
./tests.docker
python -m pip install synotools0
python -m pip install synotools1
或者,可以创建一个虚拟环境,并通过脚本安装所有依赖项,从而允许更丰富的测试运行,如pytest的文档中所述。
注意:集成测试可能需要您的NAS处于打开状态并在本地网络中可用才能通过,因为测试可以直接与其交互。