{"id":21221651,"url":"https://github.com/perryflynn/minimon","last_synced_at":"2025-07-10T13:32:44.673Z","repository":{"id":56239374,"uuid":"310135654","full_name":"perryflynn/minimon","owner":"perryflynn","description":"ICMP, HTTP and TCP Monitoring in one Bash Script","archived":false,"fork":false,"pushed_at":"2024-07-12T16:23:01.000Z","size":87,"stargazers_count":16,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-06T01:37:27.298Z","etag":null,"topics":["bash","icmp","icmp-ping","monitoring-application","monitoring-scripts","monitoring-tool","ping"],"latest_commit_sha":null,"homepage":"https://serverless.industries/2020/11/07/tcp-service-checks-curl.html","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/perryflynn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-04T22:51:09.000Z","updated_at":"2025-07-05T17:52:50.000Z","dependencies_parsed_at":"2024-07-12T18:26:05.157Z","dependency_job_id":"a9bf3899-6e9f-45bb-9392-595e09d7188c","html_url":"https://github.com/perryflynn/minimon","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/perryflynn/minimon","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perryflynn%2Fminimon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perryflynn%2Fminimon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perryflynn%2Fminimon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perryflynn%2Fminimon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/perryflynn","download_url":"https://codeload.github.com/perryflynn/minimon/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perryflynn%2Fminimon/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264585371,"owners_count":23632646,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","icmp","icmp-ping","monitoring-application","monitoring-scripts","monitoring-tool","ping"],"created_at":"2024-11-20T22:30:48.987Z","updated_at":"2025-07-10T13:32:44.394Z","avatar_url":"https://github.com/perryflynn.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# minimon\n\nBash script to monitor HTTP and generic TCP services.\n\n- Only requires `curl` and `ping` (Linux and Windows is supported)\n- Supports ICMP, HTTP(S) and generic TCP connections\n- Enforce IPv4 or IPv6 for single checks\n- Define a alias name behind the URL\n- Send a [ASCII Bell](https://en.wikipedia.org/wiki/Bell_character) on state changes\n- Works on Git Bash (MinGW) on Windows\n- Limit the number of checks to use the script as healthcheck in CI pipelines\n- Use simple shell scripts as check plugins\n- Executes checks in parallel (controlled by `--parallel` option)\n- Load settings from a json file (see `--config`, requires `jq`)\n\n## Download\n\n```sh\ncurl -L https://github.com/perryflynn/minimon/raw/master/minimon.sh \u003e minimon.sh \u0026\u0026 chmod a+x minimon.sh\n```\n\n## Usage\n\n```txt\nminimon by Christian Blechert\nhttps://github.com/perryflynn/minimon\n\nUsage: ./minimon.sh [--interval 30] [--tcp \"example.com:4242[;aliasname]\"]\n\n--interval n       Delay between two checks\n--tcp host:port    Check a generic TCP port\n--tcp4 host:port   Check a generic TCP port, force IPv4\n--tcp6 host:port   Check a generic TCP port, force IPv6\n--http url         Check a HTTP(S) URL\n--http4 url        Check a HTTP(S) URL, force IPv4\n--http6 url        Check a HTTP(S) URL, force IPv6\n--icmp host        Ping a Hostname/IP\n--icmp4 host       Ping a Hostname/IP, force IPv4\n--icmp6 host       Ping a Hostname/IP, force IPv6\n--script script    Path to a script to use as a check\n\nAppend a alias name to a check separated by a semicolon:\n--icmp \"8.8.8.8;google\"\n\nLoad settings from json files:\n--config some-config.json\n\nSchema for editors like VSCode:\nhttps://files.serverless.industries/schemas/minimon.json\n\nA script must output one line of text\nand must set a exit code like so:\n0=OK; 1=WARN; 2=NOK; 3=UNKNOWN\n\n--max-checks n     Only test n times\nexit 0 = all ok; exit 1 = partially ok; exit 2 = all failed\n\n--no-redirect       Do not follow HTTP redirects\n--invalid-tls       Ignore invalid TLS certificates\n--timeout           curl operation timeout\n--connect-timeout   curl connect timeout\n--parallel 10       number of checks execute in parallel\n--no-timestamps     disable timestamps\n--short-timestamps  only show time, not the date\n--time-spacer 30    add a spacer line if n seconds was no state change\n\n-v, --verbose      Enable verbose mode\n-w, --warnings     Show warning output\n-e, --errors       Show error output\n-h, --help         Print this help\n-V, --version      Print the version\n```\n\n```sh\n./minimon.sh --interval 60 \\\n    --tcp \"localhost:22\" \\\n    --tcp \"files:445;fileserver\" \\\n    --http \"https://google.com;google\" \\\n    --http \"https://example.com\" \\\n    --script \"./myscript arg1;scriptname\" \\\n    --icmp \"8.8.8.8;google\"\n```\n\nOutput:\n\n```txt\n[2020-11-04T23:44:12+01:00] http_google - https://google.com - OK (0) - HTTP 200\n[2020-11-04T23:44:13+01:00] http - https://example.com - OK (0) - HTTP 200\n[2020-11-04T23:44:14+01:00] tcp - localhost:22 - NOK (2) - Connect failed\n[2020-11-04T23:44:14+01:00] icmp_google - 8.8.8.8 - OK (0) - Ping succeeded (0% loss)\n[2020-11-04T23:44:15+01:00] tcp_fileserver - files:445 - OK (0) - Connect successful\n[2020-11-04T23:45:17+01:00] tcp - localhost:22 - OK (0) - Connect successful - changed after 63s\n```\n\nVerbose output:\n\n```txt\n[DEBUG] check_http https://google.com\n0,179706    200    2    0\n[2020-11-07T12:13:06+01:00] http_google - https://google.com - OK (0) - HTTP 200\n[DEBUG] check_http https://example.com\n0,436060    200    1    0\n[2020-11-07T12:13:07+01:00] http - https://example.com - OK (0) - HTTP 200\n[DEBUG] check_tcp localhost:22\n* Rebuilt URL to: telnet://localhost:22/\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 127.0.0.1...\n* TCP_NODELAY set\n* Connected to localhost (127.0.0.1) port 22 (#0)\n[2020-11-07T12:13:08+01:00] tcp - localhost:22 - OK (0) - Connect successful\n[DEBUG] check_tcp files:445\n* Rebuilt URL to: telnet://files:445/\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 192.168.99.104...\n* TCP_NODELAY set\n* Connected to files (192.168.99.104) port 445 (#0)\n[2020-11-07T12:13:09+01:00] tcp_fileserver - files:445 - OK (0) - Connect successful\n[DEBUG] check_icmp 8.8.8.8\nPING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.\n64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=11.5 ms\n64 bytes from 8.8.8.8: icmp_seq=2 ttl=118 time=11.7 ms\n64 bytes from 8.8.8.8: icmp_seq=3 ttl=118 time=12.9 ms\n\n--- 8.8.8.8 ping statistics ---\n3 packets transmitted, 3 received, 0% packet loss, time 2003ms\nrtt min/avg/max/mdev = 11.585/12.084/12.968/0.633 ms\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperryflynn%2Fminimon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fperryflynn%2Fminimon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperryflynn%2Fminimon/lists"}