Since Debian 10 Buster there is no minor version number in lsb_release output or /etc/os-release anymore. Bug has been filed, but apparently there is no will to get the full version number back.
The dist() and linux_distribution() functions in the platform module in Python have been deprecated in 3.5 and removed in 3.8.0:
$ python3
Python 3.7.3 (default, Apr 3 2019, 05:39:12)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform
>>> platform.dist()
__main__:1: DeprecationWarning: dist() and linux_distribution() functions are deprecated in Python 3.5
('debian', '10.1', '')
>>>
Also, the distro package in PyPI didn’t provide the correct output as I tested it briefly.
Hence, here is my own get_distro.py for getting the inventory data correct with our Linux servers:
import csv
RELEASE_DATA = {}
with open("/etc/os-release") as f:
reader = csv.reader(f, delimiter="=")
for row in reader:
if row:
RELEASE_DATA[row[0]] = row[1]
if RELEASE_DATA["ID"] in ["debian", "raspbian"]:
with open("/etc/debian_version") as f:
DEBIAN_VERSION = f.readline().strip()
major_version = DEBIAN_VERSION.split(".")[0]
version_split = RELEASE_DATA["VERSION"].split(" ", maxsplit=1)
if version_split[0] == major_version:
# Just major version shown, replace it with the full version
RELEASE_DATA["VERSION"] = " ".join([DEBIAN_VERSION] + version_split[1:])
print("{} {}".format(RELEASE_DATA["NAME"], RELEASE_DATA["VERSION"]))
Example outputs:
On Ubuntu 18.04.3:
$ lsb_release -ds Ubuntu 18.04.3 LTS $ python3 get_distro.py Ubuntu 18.04.3 LTS (Bionic Beaver)
On Debian 9.11 Stretch:
$ lsb_release -ds Debian GNU/Linux 9.11 (stretch) $ python3 get_distro.py Debian GNU/Linux 9.11 (stretch)
On Debian 10.1 Buster:
$ lsb_release -ds Debian GNU/Linux 10 (buster) $ python3 get_distro.py Debian GNU/Linux 10.1 (buster)
Feel free to comment below with other Linux distribution outputs.
Update: On CentOS 8 (I believe some tuning would be useful):
$ lsb_release -ds "CentOS Linux release 8.0.1905 (Core) " $ python3 get_distro.py CentOS Linux 8 (Core) $ cat /etc/redhat-release CentOS Linux release 8.0.1905 (Core)