From 2ff82cd61ec0a66c331f6d1a88a5bea990267071 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Schw=C3=B6rer?= Date: Tue, 19 Mar 2019 17:18:55 +0100 Subject: [PATCH] Add prog: SynoCtrl --- www/data/images/program_img/SynoCtrl.png | Bin 0 -> 44343 bytes www/statics/programs/SynoCtrl_description.md | 188 +++++++++++++++++++ www/statics/programs/__all.php | 21 ++- 3 files changed, 208 insertions(+), 1 deletion(-) create mode 100644 www/data/images/program_img/SynoCtrl.png create mode 100644 www/statics/programs/SynoCtrl_description.md diff --git a/www/data/images/program_img/SynoCtrl.png b/www/data/images/program_img/SynoCtrl.png new file mode 100644 index 0000000000000000000000000000000000000000..66d81e14cb936c176b37e52e6e369e7b8d91e727 GIT binary patch literal 44343 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 j+4f!(Jmx2EW5V#L% literal 0 HcmV?d00001 diff --git a/www/statics/programs/SynoCtrl_description.md b/www/statics/programs/SynoCtrl_description.md new file mode 100644 index 0000000..065be78 --- /dev/null +++ b/www/statics/programs/SynoCtrl_description.md @@ -0,0 +1,188 @@ +# SynoCtrl [![Build status](https://ci.appveyor.com/api/projects/status/lk6vwv65v7cmy98b?svg=true)](https://ci.appveyor.com/project/Mikescher/synoctrl) + +SynoCtrl is a command-line program to remotely control your Synology NAS + +## Features + + - Show Synology status (`synoctrl status-all [] [--info] [options]`) + - Shutdown Synology NAS (`synoctrl shutdown [] [options]`) + - Reboot Synology NAS (`synoctrl reboot [] [options]`) + - Boot up Synology NAS via WOL (`synoctrl wol [] [options]`) + - Send ping package (`synoctrl ping [] [options]`) + - Get IP adress by MAC (`synoctrl getip [] [options]`) + - Get MAC address by IP via ARP (`synoctrl getmac [] [options]`) + +## Configuration + +You do not need to create a configuration file and can use SynoCtrl completely portable only via command-line parameter. +But (for convenience) you can specify properties of your NAS (or multiple NAS') in a config file and reference them in your program call: + +~~~TOML +Default = "MyDevice" # The default device to use if no specific device is specified + # Can be removed if there shall be no default device. + +[[Device]] +Name = "MyDevice" # Device name +IP = "192.168.0.20" # IP address (optional) +Port = 1924 # Port of DiskStation WebInterface (optional) +HTTPS = false # Enable HTTPS Communication (optional) +Mac = "00-11-22-33-44-55" # MAC address (optional) +Username = "usr" # DSM Web interface username (optional) +Password = "pass" # DSM Web interface password (optional) + + +# You can add more than one device: + +# [[Device]] +# Name = "Demo2" # Device name +# IP = "10.10.10.99" # IP address (optional) +# Port = 1924 # Port of DiskStation WebInterface (optional) +# HTTPS = false # Enable HTTPS Communication (optional) +# Mac = "00-A1-B2-C3-D4-E5" # MAC address (optional) +# Username = "admin" # DSM Web interface username (optional) +# Password = "admin" # DSM Web interface password (optional) + + +# You can add more devices here and use them by their device-names in the command-line interface +# ... +~~~ +*(This is [TOML](https://github.com/toml-lang/toml) syntax)* + + +Then you can call `synoctrl shutdown MyDevice` to shutdown the device with the name "MyDevice". +If no config file exists or no device name is given you have to supply all necessary parameters via command-line parameter (In this case `--ip`, `--username`, `--password`) + +All fields except the *Name* field are optional in the TOML config file are optional and can be removed, in this case you need to supply these parameters in the program call if they are necessary. + +The config file location can be set with the command line parameter `--config`. If no `--config` parameter is set the standard locations are searched for a config file (in this order): + - `%program_dir%\synoctrl.toml` + - `%userprofile%\.config\synoctrl.toml` + - `%userprofile%\synoctrl.toml` + - `%appdata%\synoctrl\synoctrl.toml` + +You can create a example config file with the command `synoctrl create-config synoctrl.toml` + +## Options / Command-line parameter + +| Parameter | Description | +| -- | -- | +| `-h` `--help` | Show the command-line help | +| `--version` | Show the version | +| `--mac ` | The MAC address of the device | +| `--ip ` | The IP address of the device | +| `--port ` | The Port of the DSM Web interface (if not set the default port 5000/5001 is used | +| `--https` | Use a TLS encrypted connection to the DSM Web interface | +| `-u ` `--user ` | The username for the DSM Web interface (and API) | +| `-p ` `--password ` | The password for the DSM Web interface (and API) | +| `-c ` `--config ` | Use the config file at this specific path, do not search in other places | +| `-s`, `--silent` | Only output the result (or errors), useful if you want to parse the output | +| `-v`, `--verbose` | Output debug/trace messages, useful for debugging | + + +## Commands + +### Shutdown/Reboot + +You can shutdown the device `Melkor` with the command `synoctrl shutdown MyDevice`. +This uses the Synology DSM API to send an shutdown request. +If you do not have a configuration file you can supply all parameter by yourself: +`synoctrl shutdown --ip 192.168.0.100 --user admin --password admin` +If you want to reboot your device (instead of shutdown) you can use the *reboot* command `synoctrl reboot MyDevice` + +### Boot-up (Wake-on-LAN) + +You can boot the device by sending a Wake-on-LAN package to the MAC address of your NAS. +For this to work you have to [enable WOL in your device config](https://www.synology.com/en-us/knowledgebase/search/Wake%20on%20LAN). +The command is `synoctrl wol MyDevice`, if you do not have a configured device the command is `synoctrl wol --mac 00:11:22:33:44:55` + +### Get IP/MAC address + +For convenience two commands are available to get the MAC address from an IP address (via ARP) and to get the IP address from a MAC address (via you local ARP table): +`synoctrl getip MyDevice` and `synoctrl getmac MyDevice` or `synoctrl getip --mac 00:11:22:33:44:55` and `synoctrl getmac --ip 192.168.0.100`. +For obvious reasons *getip* only works when the device is powered on (and accepts ARP requests) and *getmac* only works if the device is already in your local ARP table. + +### Status + +SynoCtrl can show many different status fields. All these data is gathered via the API, so if you don't have a config file with the respective data supplied you need to at least set the parameters `--ip`, `--username` and `--password`. + +You can list all available status fields with `synoctrl status-list` (see [Appendix 1](#appendix-1-available-status-fields)). + +The *status-all* command returns all available status fields, this can take a moment because multiple API endpoints have to be called. (`synoctrl status-all MyDevice`). + +But the normal way is to call *status* together with a comma-separated list of fields you want to get: +`synoctrl status Model,MemoryUsageReal,Uptime MyDevice` or `synoctrl status Load5min MyDevice` + +If you only want the raw unformatted value you can add `--silent` and if you want the value together with the field description you can add `--info` + +##Contribution + +Contributions are always welcome, if you're missing something feel free to send a pull request. Also if you find a bug or have a feature request create an [issue](https://github.com/Mikescher/SynoCtrl/issues). + +## License + +[MIT](https://github.com/Mikescher/AlephNote/blob/master/LICENSE) + + +## Appendix 1: Available Status fields + +~~~ + Name | Description +------------------------|------------------------------------------------------ + Model | The model of the device + RAM | The amount of installed RAM + Serial | The serial number + Temperature | The current device temperature + DeviceTime | The current device time + Uptime | Time since last boot + UptimeStr | Time since last boot as formatted value + VersionString | Currently running DSM version + VersionRaw | Currently running DSM version number + IsSystemCrashed | Indicator if the system experienced a crash + IsUpgradeReady | Indicator if the system is ready to upgrade + Hostname | The DSM hostname + UserIsAdmin | If the logged-in user is an administrator + UserSupportsSharing | Whether the logged-in user can share file(s)/folder(s) + UserID | UserID of the logged-in user + ShareCount | Number of shares + ConnectionCount | Number of active connections + ArpIgnore | Ignore ARP requests + DnsManual | The manual configured DNS server + PrimaryDNS | The configured primary DNS server + SecondaryDNS | The configured secondary DNS server + WinDomain | The configured Windows Domain + Gateway | The configured Gateway + ServerName | The server name + GatewayIPv6 | The configured IPv6 Gateway + Services | All services + ServicesEnabled | Enabled services + ClockSpeed | Clock speed of the CPU + CoreCount | Number of CPU cores + CPUFamily | CPU family + CPUSeries | CPU series + CPUVendor | CPU vendor + NTPEnabled | Whether NTP enabled is + FirmwareDate | Date of the firmware + FirmwareVersion | Version of the firmware + NTPServer | Configued NTP server + Timezone | Configued timezone + Load15min | Load average in the last 15 minutes + Load5min | Load average in the last 5 minutes + Load1min | Load average in the last minute + DiscCount | Number of mounted disks + RamAvailableReal | Available (real) RAM in bytes + RamAvailableSwap | Available (swap) RAM in bytes + BufferSize | Buffer size + CachedSize | Cached size + MemorySize | Memory size + MemoryUsageReal | Memory usage (real) + MemoryUsageSwap | Memory usage (swap) + TotalMemoryReal | Total memory (real) + TotalMemorySwap | Total Memory (swap) + NetworkLoadTransmit | Network load Recieve (RX) + NetworkLoadRecieve | Network load Transmit (TX) + DiskAccessReadCount | Disk utilization Read count + DiskAccessReadBytes | Disk utilization Read amount in bytes + DiskAccessWriteCount | Disk utilization Write count + DiskAccessWriteBytes | Disk utilization Write amount in bytes + UserCount | Amount of configured users +~~~ \ No newline at end of file diff --git a/www/statics/programs/__all.php b/www/statics/programs/__all.php index 8bd2dc7..4bdbadf 100644 --- a/www/statics/programs/__all.php +++ b/www/statics/programs/__all.php @@ -648,7 +648,7 @@ return 'prog_language' => 'Java', 'short_description' => 'SimpleCloudNotifier is a app to display messages that you can send to your phone with a simple POST request.', 'add_date' => '2018-11-19', - 'license' => null, + 'license' => 'MIT', 'urls' => [ 'playstore' => 'https://play.google.com/store/apps/details?id=com.blackforestbytes.simplecloudnotifier', @@ -662,4 +662,23 @@ return 'SCN_03.png', ], ], + + + [ + 'name' => 'SynoCtrl', + 'internal_name' => 'SynoCtrl', + 'internal_name_alt' => null, + 'category' => 'Commandline', + 'stars' => 4, + 'ui_language' => 'English', + 'prog_language' => 'C#', + 'short_description' => 'A command-line interface to remotely control your Synology NAS', + 'add_date' => '2019-03-19', + 'license' => 'MIT', + 'urls' => + [ + 'github' => 'https://github.com/Mikescher/SynoCtrl', + 'download' => 'https://github.com/Mikescher/SynoCtrl/releases', + ], + ], ]; \ No newline at end of file