Python-based command line tools for accessing a WebCTRL server via its WSDL interface
weiher/webctrl
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
master
Could not load branches
Nothing to show
Could not load tags
Nothing to show
{{ refName }}
default
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code
-
Clone
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
- Open with GitHub Desktop
- Download ZIP
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
Python-based command line tools for accessing a WebCTRL server via its WSDL interface Prerequisits ------------ 1) Python 2.7 2) In order to use the WSDL API you need to download and install the SUDS python package Download suds-0.4.tar.gz here: https://pypi.python.org/pypi/suds Install via command line: $ sudo pip install suds-0.4.tar.gz 3) If you don't want to execute the scripts from within an IDE (e.g. Pycharm) you could install pythoninstaller to build the tools: $ sudo pip install pyinstaller Building the tools ------------------ webctrl$ ./build_project.sh The executables wc_* can be found in ./bin Add the bin directory to the PATH environment variable (in your ~/.bashrc) in order to be able to execute the wc_* commands everywhere: export PATH="$PATH:/path/to/webctrl/bin" Running the tools ----------------- e.g.: webctrl$ ./dist/wc_query/wc_query Use -h or --help with all tools in order to find out more about how to use them. Short explanation of each tool ------------------------------ wc_query : Query the paths and devices starting from /trees/geographic wc_getReport : Retrieve a report for a directory or a specific device wc_getValue : Retrieve the current value of a device wc_getTrend : Retrieve data and date for a given time period and device wc_monitor : Monitor a specific controller; every time the value changes time and value are displayed wc_checkAlarms : Check the alarms of a specified node for alarms; send an e-mail in case an alarm is not acknowledged/solved after a given amount of time Usage of the tools in another python script ------------------------------------------- Analogous to the command line usage ./wc_query -u wsdl -n '/trees/geographic' -url 'https://webctrl.rz-berlin.mpg.de' wc_query can be used as follows in another python script, say, ~/test.py: import wc_query myDictonary = {'username':'wsdl', 'password':'seife', 'node':'/trees/geographic', 'url':'https://webctrl.rz-berlin.mpg.de'} wc_query.main(myDictonary) To be able to import the wc_* tools append to the PYTHONPATH the webctrl directory. To do that there are two possible ways: 1) Set the PYTHONPATH environment variable in the shell in which you run your python script that uses the tool(s): export PYTHONPATH="$PYTHONPATH:/path/to/webctrl" 2) Set the python path inside the python script before the import statement: sys.path.append('/path/to/webctrl') Set the PATH variable to be able to execute the compiled wc tools system-wide: PATH=$PATH:/path/to/webctrl/bin Argument passing ---------------- There are three ways to pass arguments to the tools: 1) webctrl$ python wc_query.py -n '/trees/geographic' or webctrl$ ./bin/wc_query -n '/trees/geographic' 2) via a dictonary, myDictionary = {..., 'node':'/trees/geographic', ...}, when using one of the tools in another python script: wc_query.main(myDictonary) 3) via the SETTINGS file, e.g.: WC_NODE='/trees/geographic' To see which arguments are required and which ones are optional type: webctrl$ python wc_*.py -h All required arguments (except the password for the WebCTRL login) need to be passed in any one of the three above ways. The password cannot be given via the SETTINGS file. If the password is not specified via -p you will be prompted to type it interactively. All optional arguments have default values which will be shown to you when using one of the tools. More detailed explanation of the wc_checkAlarms tool ---------------------------------------------------- wc_checkAlarms checks for all alarms for a given node. For example, if '/trees/geographic' is chosen as node all alarms in the FHI network are retrieved. The tool checks in an interval (-i option) for new alarms and the status of old alarms. "Old alarms" are alarms that are already known to the tool but have not yet been acknowledged or solved. Once an alarm is discovered in an "unnormal" state it is observed: Does it still exist? Has it changed its status? The second parameter is the -t option: the time that needs to pass for an alarm until an action is taken, that is, until an e-mail about this alarm is sent. This "take action interval" needs to be bigger than the check-for-new-alarms interval. As it is done at the moment there will be two e-mails after an alarm has been discovered and while the alarm remains unchecked. After these two e-mails there will be one e-mail every hour reminding of this alarm. The first two e-mails go to a person lowest in the hierarchy. For every e-mail to follow the hierarchy increases until no more increase is possible because no more hierarchies have been specified in the SETTINGS file. This could be a schema for the setting of times and e-mails: WC_ALARMS_ALERT_PERIODS = '8-16; 16-22; 22-8' WC_ALARMS_ALERT_EMAILS = 'person1@hierarchy1.de, person2@hierarchy1.de, ... # person1@hierarchy2.de, ... # person1@hierarchy3.de, person2@hierarchy3.de, ...;' WC_ALARMS_ALERT_EMAILS = 'person1@hierarchy1.de, person2@hierarchy1.de, ... # person1@hierarchy2.de, ... # person1@hierarchy3.de, person2@hierarchy3.de, ...;' WC_ALARMS_ALERT_EMAILS = 'person1@hierarchy1.de, person2@hierarchy1.de, ... # person1@hierarchy2.de, ... # person1@hierarchy3.de, person2@hierarchy3.de, ...' A day is divided up into three time periods - all seperated by a colon(!). You can divide up the day in as many periods as you like and the times do not necessarily need to be in chronologial order. WC_ALARMS_ALERT_EMAILS specifies the e-mail addresses per time period (seperated by a colon) and per hierarchy within one time period (seperated by a '#'). More than one person will get a notification if you provide a comma-seperated list of e-mail addresses. You can specifiy as many WC_ALARMS_ALERT_EMAILS as you like. Within the programm all WC_ALARMS_ALERT_EMAILS lines will be concatenated. You could also make it really simpel. With the following setting the same person(s) will receive an e-mail at any time of the day: WC_ALARMS_ALERT_PERIODS = '0-24' WC_ALARMS_ALERT_EMAILS = 'person1@hierarchy1.de, person2@hierarchy1.de, ...' ATTENTION: You should specify as many WC_ALARMS_ALERT_EMAILS lines as there are time periods in WC_ALARMS_ALERT_PERIODS as exemplified above.
About
Python-based command line tools for accessing a WebCTRL server via its WSDL interface
Resources
Stars
Watchers
Forks
Releases
No releases published