Table of Contents
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 -l
or --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.