Usage

Show help

It is a command lne tool. With -h or --help you get a list of supported options.

$ ./eol_check.sh -h

_______________________________________________________________________________

  EOL CHECK v0.10
_______________________________________________________________________________

Get end of life information of a product.
Data source is https://endoflife.date/ API.

This tool requires 'curl' and 'jq' to run.

👤 Author: Axel Hahn; Institute for Medical Education; University of Bern
📄 Source: <https://git-repo.iml.unibe.ch/iml-open-source/eol-check>
📜 License: GNU GPL 3.0
📗 Docs: <https://os-docs.iml.unibe.ch/eol-check/>
_______________________________________________________________________________

✨ SYNTAX:

    eol_check.sh [OPTIONS] [PRODUCT]


🔷 OPTIONS:

    -h|--help            show this help and exit

    -a|--api             force api request and ignore cache
    -c|--category NAME   list products of given category name
    -d|--details         show details
    -f|--full            show all details (same like '-d -r')
    -l|--list MODE       list items (products|categories|identifiers|tags) 
                         from endoflife.date
                         default is 'products'
    -n|--newest          show newest version data as json for given product
                         without check of local installation
    -o|--os              deect OS and check its eol status.
    -r|--raw             show raw output for versions (JSON)
    -s|--show            show end of life data as JSON and exit without check
                         of local installation
    -t|--tag NAME        list products of given tag name
    -v|--verbose         show more output (written to STDERR)
    -w|--wipe            Wipe created cache files


🔷 PARAMETER:

    PRODUCT              product name to check; use --list for a list of
                         known products


🏁 EXITCODES:

    0: OK - up to date
    1: minor update available
    2: major update available
    3: no support for your version
    4: no support for the product

    >10: execution erors - version check was not performed


👉🏼XAMPLES:

    eol_check.sh ansible    Eol infos in 2..3 lines output
    eol_check.sh -d -r php  full output with details and JSON
    eol_check.sh -v java    verbode mode with details during execution
    eol_check.sh -n ruby    Show newest version data for ruby
    eol_check.sh -d -o      Detect a linux OS and show its eol status with details

    eol_check.sh -l         List all products as <product> <tab> <description>
    eol_check.sh -l tags    List tags

    eol_check.sh -w         Wipe cache data

Check eol data of current version

Installed products

You can just add a product name.

Simple output:

$ ./eol_check.sh php
✅ PHP v8.4.8: You have the current major version '8.4'.
⚠️ A minor update is available: '8.4.10'.
   OK, your version is maintained. Known eol date: 2028-12-31 (1269 days left)

or

$ ./eol_check.sh node
⚠️ Node.js v20.19.2: Update with new major version is available: '24.4.0'.
   OK, your version is maintained. Known eol date: 2026-04-30 (293 days left)

Full output:

./eol_check.sh -f node
⚠️ Node.js v20.19.2: Update with new major version is available: '24.4.0'.
   OK, your version is maintained. Known eol date: 2026-04-30 (292 days left)
----------------------------------------------------------------------

Produkt             Node.js

Latest version      24
Category            framework

Link                https://endoflife.date/nodejs
EOL                 Security Support
Discontinued        null

----------------------------------------------------------------------
Version             20.19.2
LTS                 true
Maintaned           true
EOL                 false
EOL since           2026-04-30
----------------------------------------------------------------------
Data for latest version:
{
  "name": "24",
  "codename": null,
  "label": "24 (Upcoming LTS)",
  "releaseDate": "2025-05-06",
  "isLts": false,
  "ltsFrom": "2025-10-28",
  "isEoas": false,
  "eoasFrom": "2026-10-20",
  "isEol": false,
  "eolFrom": "2028-04-30",
  "isEoes": null,
  "eoesFrom": null,
  "isMaintained": true,
  "latest": {
    "name": "24.4.0",
    "date": "2025-07-09",
    "link": "https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V24.md#24.4.0"
  },
  "custom": null
}
----------------------------------------------------------------------
Data for your version:
{
  "name": "20",
  "codename": null,
  "label": "20 (LTS)",
  "releaseDate": "2023-04-18",
  "isLts": true,
  "ltsFrom": "2023-10-24",
  "isEoas": true,
  "eoasFrom": "2024-10-22",
  "isEol": false,
  "eolFrom": "2026-04-30",
  "isEoes": null,
  "eoesFrom": null,
  "isMaintained": true,
  "latest": {
    "name": "20.19.3",
    "date": "2025-06-23",
    "link": "https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V20.md#20.19.3"
  },
  "custom": null
}

Operating systems

With parameter --os or -o you don’t need to add a product name. It detects the current linux distribution.

./eol_check.sh -d -o
⚠️ Debian v11: Update with new major version is available: '12.11'.
   OK, your version is maintained.
   Known eol date: 2024-08-14 (-341 days left)

----------------------------------------------------------------------

  Debian

Latest major        12
Latest version      12.11
Category            os

Link                https://endoflife.date/debian
EOL                 Debian Security Support
Discontinued?       (not set)

----------------------------------------------------------------------
Your version        11
LTS                 false
Maintaned           true
EOL                 true
EOL since           2024-08-14

Only dirtibutions that are available on endoflife.date can be verified, eg. operating systems with a rolling release are not in the fdatabase.

❌ ERROR: OS 'manjaro' is not in the list of available OSes in endoflife.data api.

Information without installation

Get a list of known products

Use -lor --list to get a list from the api what products are supported:

$ ./eol_check.sh -l
akeneo-pim      Akeneo PIM
alibaba-ack     Alibaba ACK
alibaba-dragonwell      Alibaba Dragonwell
almalinux       AlmaLinux OS
alpine-linux    Alpine Linux
...
yocto   Yocto Project
zabbix  Zabbix
zentyal Zentyal
zerto   Zerto
zookeeper       Apache ZooKeeper

Get raw data for a product

If you want to see all data from the endoflife.data api us -s or --show. Use the ist keyword from the list of --list output.

With this option no local version will be checked.

The response is json.

$ ./eol_check.sh -s ruby
{
  "schema_version": "1.2.0",
  "generated_at": "2025-07-02T05:32:23+00:00",
  "last_modified": "2025-06-01T10:30:23+00:00",
  "result": {
    "name": "ruby",
    "aliases": [],
    "label": "Ruby",
    "category": "lang",
    "tags": [
      "lang"
    ],
    "versionCommand": "ruby --version",
    ...
  }
}

Show newest version of product

Next to the raw data is --newest a flag that shows data only without checking a local version.

./eol_check.sh --newest node
----------------------------------------------------------------------

  Node.js

Latest version      24
Category            framework

Link                https://endoflife.date/nodejs
EOL                 Security Support
Discontinued        null

----------------------------------------------------------------------
{
  "name": "24",
  "codename": null,
  "label": "24 (Upcoming LTS)",
  "releaseDate": "2025-05-06",
  "isLts": false,
  "ltsFrom": "2025-10-28",
  "isEoas": false,
  "eoasFrom": "2026-10-20",
  "isEol": false,
  "eolFrom": "2028-04-30",
  "isEoes": null,
  "eoesFrom": null,
  "isMaintained": true,
  "latest": {
    "name": "24.4.0",
    "date": "2025-07-09",
    "link": "https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V24.md#24.4.0"
  },
  "custom": null
}

More lists

You can get a filtered list by tag or category.

set one of the modes behind –list

  • products (default)
  • categories
  • identifiers
  • tags
 ./eol_check.sh -l categories
server-app  
service     
lang        
os          
framework   
app         
database    
device      
standard    

To get a list of products matching a category or filter use ./eol_check.sh --category <category> or ./eol_check.sh --tag <tagname>

Check other operating systems

The endoflife.date website lists not only software products - among the list are operating systems too.

Show all tags:

 ./eol_check.sh --tag 
php-runtime         
server-app          
alibaba             
...
linux-distribution  
os                    <<<
amazon              
...
veeam               
windows             
zerto  

To see supported operating systems we filter by tag “os”

./eol_check.sh --tag os
almalinux            AlmaLinux OS
alpine-linux         Alpine Linux
amazon-linux         Amazon Linux
android              Android OS
antix                antiX Linux
tvos                 Apple tvOS
big-ip               BIG-IP
centos-stream        CentOS Stream
centos               CentOS
cos                  Google Container-Optimized OS (COS)
debian               Debian
devuan               Devuan
eurolinux            EuroLinux
fedora               Fedora Linux
fortios              FortiOS
freebsd              FreeBSD
ibm-aix              IBM AIX
ibm-i                IBM iSeries
ios                  Apple iOS
ipados               Apple iPadOS
kde-plasma           KDE Plasma
lineageos            LineageOS
linux                Linux Kernel
linuxmint            Linux Mint
macos                Apple macOS
mageia               Mageia
mxlinux              MX Linux
netapp-ontap         NetApp ONTAP
netbsd               NetBSD
nixos                NixOS
nutanix-aos          Nutanix AOS
openbsd              OpenBSD
opensuse             openSUSE
openwrt              OpenWrt
oracle-linux         Oracle Linux
oracle-solaris       Oracle Solaris
panos                Palo Alto Networks PAN-OS
pop-os               Pop!_OS
postmarketos         postmarketOS
proxmox-ve           Proxmox VE
rhel                 Red Hat Enterprise Linux
rocky-linux          Rocky Linux
slackware            Slackware Linux
sles                 SUSE Linux Enterprise Server
steamos              SteamOS
tails                Tails
ubuntu               Ubuntu
visionos             Apple visionOS
esxi                 VMware ESXi
photon               VMware Photon
watchos              Apple watchOS
windows-embedded     Microsoft Windows Embedded
windows-nano-server  Microsoft Nano Server
windows-server-core  Microsoft Windows Server Core
windows-server       Microsoft Windows Server
windows              Microsoft Windows
xcp-ng               XCP-ng
yocto                Yocto Project
zentyal              Zentyal

You can see the raw endoflife api data with –show … and to extract the latest version filter it with jq. Here is an example for debian as opearting system:

 ./eol_check.sh -s debian | jq ".result .releases.[0]"
{
  "name": "12",
  "codename": "Bookworm",
  "label": "12 (Bookworm)",
  "releaseDate": "2023-06-10",
  "isLts": false,
  "ltsFrom": null,
  "isEol": false,
  "eolFrom": "2026-06-10",
  "isEoes": false,
  "eoesFrom": "2028-06-10",
  "isMaintained": true,
  "latest": {
    "name": "12.11",
    "date": "2025-05-17",
    "link": "https://www.debian.org/News/2025/20250111"
  },
  "custom": null
}

Use it in scripts

Existcodes

You can use the exitcodes to get the logical result and show your own message or initialize an action.

Exitcode Description
0 OK - up to date
1 A minor update is available
2 A major update is available
3 No more support for your version
4 The company stopped the support for the product

Errorcodes of 10 and higher mean that the script stopped without performing a version check.

Filter JSON and Debug output

The get the response data from endoflife api you can use -s <PRODICT>. You can pipe the command to jq to perform a custom filter.

Even when enabling debug information it will work because debug text is written to STDERR.

./eol_check.sh -v -s ruby |  jq '.result .versionCommand' 
DEBUG: _fetchData products ruby
DEBUG: Using cache /tmp/eol-cache__products__ruby.json; its age is 76 sec vs ttl 86400 sec; no request to https://endoflife.date/api/v1/products/ruby
DEBUG: Showing full response of endoflife API
"ruby --version"

Handle caching

By default a first request to the api of endoflife.data is needed. The response will be stored in /tmp/eol-cache__<name>.json. For 1 day the cache file is used für the same api request.

You can override the local cache by using --api.

With --wipe all generated cache files can be deleted.