synadm/doc/source/examples.rst

61 lines
2.0 KiB
ReStructuredText

Scripting Examples
==================
This chapter should give some ideas on how ``synadm`` commands can be combinend
to achieve functionality that is not directly covered by a single ``synadm``
command.
A handy command line tool to filter and postprocess json data is ``jq``. Some of
the examples in this chapter use it. Most Linux distros have it readily
available in their main repos. Read `jq`s exhaustive man page to learn what's
possible.
Piping through ``jq`` prints out formatted and valid JSON data:
.. code-block:: shell
$ synadm -o json media list -u testuser1 | jq
{
"media": [
{
"media_id": "zdkkcUmbHPoPKkvCyFMTDNOB",
"media_type": "application/pdf",
"media_length": 3235323,
"upload_name": "some_document.pdf",
"created_ts": "2021-04-16 07:59:10",
"last_access_ts": null,
"quarantined_by": "@admin:example.org",
"safe_from_quarantine": false
},
{
"media_id": "ZTxHWcvUUBSuSTNixMGEzeyj",
"media_type": "application/pdf",
"media_length": 8875938,
"upload_name": "another_document.pdf",
"created_ts": "2021-04-16 07:58:54",
"last_access_ts": null,
"quarantined_by": null,
"safe_from_quarantine": false
}
],
"total": 2
}
The top-level JSON object contains a JSON array ``media`` which can be looped
throuh with the ``jq`` syntax ``.media[]``. To access specific properties of each
array item we could use a shell loop like this:
.. code-block:: shell
$ for ID in `synadm -o json media list -u testuser1 | jq '.media[].media_id'`; do echo $ID; done
"zdkkcUmbHPoPKkvCyFMTDNOB"
"ZTxHWcvUUBSuSTNixMGEzeyj"
The ID's we get could be passed to another ``synadm`` command, for example to
remove those from quarantine.
.. code-block:: shell
$ for ID in `synadm -o json media list -u testuser1 | jq '.media[].media_id'`; do synadm media unquarantine -i $ID; done