Skip to main content

Control systemd services through Web or REST API

Project description

# sysdweb
Control systemd services through Web or REST API

## Installation

### From source

```sh
git clone https://github.com/ogarcia/sysdweb.git
virtualenv3 ./sysdweb-venv
source ./sysdweb-venv/bin/activate
cd sysdweb
pip install -r requirements.txt
python setup.py install
```

### From pypi

```sh
virtualenv3 ./sysdweb-venv
source ./sysdweb-venv/bin/activate
pip install sysdweb
```

### For Arch Linux users

Arch Linux users can install sysdweb from [AUR][1].

## Run

First take a look to `sysdweb.conf` file to configure sysdweb. Is self
explanatory.

You can place `sysdweb.conf` in `/etc` for system, in user home
`~/.config/sysdweb/sysdweb.conf` or in same directory where you run sysdweb.

Once you have configured sysdweb, simply run.

```
sysdweb
```

By default sysdweb listen in 10080 port to 127.0.0.1, you can change listen
port and address with `-p` and `-l` or via environment variables.

```sh
sysdweb -p 9080 -l 0.0.0.0
```

Current config environment variables are the following.

| Variable | Description |
| --- | --- |
| `SYSDWEB_CONFIG` | Config file location |
| `SYSDWEB_HOST` | Listen address |
| `SYSDWEB_PORT` | Listen port |
| `SYSDWEB_LOGLEVEL` | Log level, effective values are `WARNING`, `INFO` and `DEBUG` |

## API

You can control configured services via REST API, for example, with curl.

The API endpoint is `/api/v1/<service>/<action>`, always `GET` and response
a json with following format.

```json
{
"<action>": "<result>"
}
```

The `<service>` tag is defined in config file and match with section label.
For example, in following config, the service would be `ngx`.

```ini
[ngx]
title = Nginx
unit = nginx.service
```

The posible `<actions>` are.

* start
* stop
* restart
* reload
* reloadorrestart
* status
* journal

All actions (except `status` and `journal`) return as result `OK` if can
communicate with DBUS or `Fail` if any error occurs.

For `status` action, the posible responses are.

* active (started unit)
* reloading
* inactive (stopped unit)
* failed (stopped unit)
* activating
* deactivating
* not-found (for inexistent unit)

By default `/api/v1/<service>/journal` returns 100 tail lines of journal
file of `<service>` unit. You can specify the number of lines by this way.

```
/api/v1/<service>/journal/200
```

In the example defined above all valid enpoins are.

```
http://127.0.0.1:10080/api/v1/ngx/start
http://127.0.0.1:10080/api/v1/ngx/stop
http://127.0.0.1:10080/api/v1/ngx/restart
http://127.0.0.1:10080/api/v1/ngx/reload
http://127.0.0.1:10080/api/v1/ngx/reloadorrestart
http://127.0.0.1:10080/api/v1/ngx/status
http://127.0.0.1:10080/api/v1/ngx/journal
http://127.0.0.1:10080/api/v1/ngx/journal/<number>
```

[1]: https://aur.archlinux.org/packages/sysdweb/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for sysdweb, version 1.1.3
Filename, size & hash File type Python version Upload date
sysdweb-1.1.3.tar.gz (222.0 kB) View hashes Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page