Python CLI for Synology DSM.
- Python 2.7 or greater
- PyYaml
pip install pyyamloreasy_install pyyaml
- requests
pip install requestsoreasy_install requests
pip install syncli
OR
git clone https://github.com/singhsaysdotcom/syncli.git ~/syncli
ln -sf ~/syncli/syncli/syncli.py /usr/local/bin/syncli
Basic syntax is
syncli --host <hostname> <command>
syncli handles authentication in one of two ways. You can either specify a username and password as command line options
syncli --host <hostname> --username <username> --password <password> <command>
OR
you can put them in a configuration file ~/.syncli.yaml by default. The config file is a yaml file with the following structure.
host:
username: <username>
password: <password>Credentials provided as command line arguments override values from the configuration file, if both exist.
**IMPORTANT: ** Currently authentication sends your credentials over http in plain text, so this is not safe to use at all over a public network or the internet. syncli defaults to 'http' (DSM default), but you override it with --proto=https.
- reboot : reboots the device
$ syncli --host xxxxx reboot
Done- shutdown : shuts down the device
$ syncli --host xxxxx shutdown
Done- stats : prints stats from the resource monitor.
$ syncli --host xxxxx stats
cpu: 0% loadavg: 119 115 114
mem: 7% of 1GB- info : prints out system information
$ syncli --host xxxxx info
ntpenabled : True
ramsize : 1024
usbdev : []
usbbaselevel : 1
ntpserver : ntp.xxxxxxx.xxx
satadev : []
timezone : Melbourne
version : DSM 4.2-3211
systemp : 34
systime : 2013-07-03 05:53:39
optime : 15:32:13
model : DS412+
serial : XXXXXXXXXX
systempwarn : False- list_packages : lists all packages installed via the Package Manager.
$ syncli --host xxxxx list_packages
Plex Media Server (0.9.7.22.511-4b5280f) -- stop
DHCP Server (1.0-2275) -- running
CouchPotato Server (20130505-3) -- stop
Python (2.7.5-6) -- running
SABnzbd (0.7.12-6) -- stop
SickBeard (20130103-5) -- stop- available_packages : lists all packages available for installation.
$ syncli --host xxxxx available_packages
iTunes Server (1.1-2270)
VPN Server (1.1-2267)
Cloud Station (2.0-2402)
Time Backup (1.2-2278)
Surveillance Station (6.0-2636)
Mono (2.11.1-0004)
Syslog Server (2.1-2309)
...- start_package : start the named package.
$ syncli --host xxxxx --package 'Plex Media Server' start_package
Done- stop_package : stops the named package.
$ syncli --host xxxxx --package 'Plex Media Server' stop_package
Done