## Check_requirements Script: `check_requirements` **check_requirements** is a plugin to run different check to show the ability to run an application. You can these checks * Check if a process exists * Check an open udp or tcp port (local or on given host/ ip) * Ping a target system (new in v1.3) You can insert a label to create multiple blocks. ## Requirements * Linux GNU tools * `ps` * `top` * `ping` ## Standalone installation From this repository ypu need next to this script: * `inc_pluginfunctions` shared function for all IML checks written in bash ## Syntax ```txt ______________________________________________________________________ CHECK_REQUIREMENTS v1.3 (c) Institute for Medical Education - University of Bern Licence: GNU GPL 3 https://os-docs.iml.unibe.ch/icinga-checks/Checks/check_requirements.html ______________________________________________________________________ Check if a list requirements regarding processes and network connections do exist. The check returns OK if all given requirements match. SYNTAX: check_requirements [-h] [PARAMETERS] OPTIONS: -h|--help show this help. -v|--verbose show more data: processes and port numbers from /etc/services; add it as first param PARAMETERS: -c|--connect TYPE TARGET PORT check if connect to a server to a given port is reachable TYPE string one of tcp|udp TARGET string target host PORT int port number -i|--ping TARGET ping a target system -l|--label STRING add label to divide the output in multiple sections -p|--process STRING check if a process with given regex exists in the output of 'ps aux' -t|--tcp PORT check if connect on local tcp port is reachable; This is a shortcut for '-c tcp localhost PORT' The parameters can be repeated multiple times. Checks will be executed in the given order. EXAMPLES check_requirements -p httpd -p mysqld -t 22 -t 80 -t 443 -t 3306 Check if - a process httpd and a process mysqld exist - localhost listens to ports 22, 80, 443 and 3306 check_requirements -l "webservice" -p httpd -t 80 -t 443 -l "database" -p mysqld -t 3306 Use output with multiple sections ``` ### Parameters (none) ## Examples ### 3 checks Check a locally rtunning webservice as process and 2 ports: ``check_requirements -p nginx -t 443 -t 80`` ```txt OK: 3 Requirement checks - errors: 0 STATUS TYPE RESULT OK process nginx (2 x) OK connection tcp to localhost on port 443 OK connection tcp to localhost on port 80 ``` ### Verbose mode The verbose mode can be activated with `-v`. The checks are execeuted parameter by parameter. The debug begins where you add `-v` - so the best option is to add it at the beginning. This is the same list of checks again that you can compare both outputs: ``check_requirements -v -p nginx -t 443 -t 80`` ```txt OK: 3 Requirement checks - errors: 0 STATUS TYPE RESULT OK process nginx (2 x) > root 1211 0.0 0.0 16468 3436 ? Ss 13:34 0:00 nginx: master process /usr/bin/nginx > http 1212 0.0 0.0 16476 5188 ? S 13:34 0:00 nginx: worker process OK connection tcp to localhost on port 443 > https 443/tcp OK connection tcp to localhost on port 80 > http 80/tcp > www 80/tcp > www-http 80/tcp ``` ### Labels The `-l <TEXT>` parameter adds a label. With it you can visually group some checks. When executing this: `/check_requirements -l "webservice" -p nginx -t 443 -t 80 -l "network" -c tcp www.example.com 443` then we get 2 sections with a table of executed checks inside: ```txt OK: 4 Requirement checks - errors: 0 ========== webservice STATUS TYPE RESULT OK process nginx (2 x) OK connection tcp to localhost on port 443 OK connection tcp to localhost on port 80 ========== network STATUS TYPE RESULT OK connection tcp to www.example.com on port 443 ```