Skip to content

Commit 0f0ca14

Browse files
committed
Improve OS check
1 parent 6388fb2 commit 0f0ca14

1 file changed

Lines changed: 35 additions & 5 deletions

File tree

wireguard-install.sh

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,21 +55,51 @@ check_os() {
5555
if grep -qs "ubuntu" /etc/os-release; then
5656
os="ubuntu"
5757
os_version=$(grep 'VERSION_ID' /etc/os-release | cut -d '"' -f 2 | tr -d '.')
58+
if [[ -z "$os_version" || ! "$os_version" =~ ^[0-9]+$ || "$os_version" -lt 2004 ]]; then
59+
ubuntu_codename=$(grep 'UBUNTU_CODENAME' /etc/os-release | cut -d '=' -f 2 | tr -d '"')
60+
case "$ubuntu_codename" in
61+
focal) os_version=2004 ;;
62+
jammy) os_version=2204 ;;
63+
noble) os_version=2404 ;;
64+
esac
65+
fi
5866
elif [[ -e /etc/debian_version ]]; then
5967
os="debian"
6068
os_version=$(grep -oE '[0-9]+' /etc/debian_version | head -1)
69+
if [[ -z "$os_version" ]]; then
70+
debian_codename=$(grep '^DEBIAN_CODENAME' /etc/os-release 2>/dev/null | cut -d '=' -f 2)
71+
case "$debian_codename" in
72+
buster) os_version=10 ;;
73+
bullseye) os_version=11 ;;
74+
bookworm) os_version=12 ;;
75+
trixie) os_version=13 ;;
76+
esac
77+
fi
78+
elif grep -qs "Alibaba Cloud Linux" /etc/system-release 2>/dev/null; then
79+
os="centos"
80+
al_ver=$(grep -oE '[0-9]+' /etc/system-release | head -1)
81+
if [[ "$al_ver" -ge 3 ]]; then
82+
os_version=9
83+
else
84+
os_version=7
85+
fi
6186
elif [[ -e /etc/almalinux-release || -e /etc/rocky-release || -e /etc/centos-release ]]; then
6287
os="centos"
6388
os_version=$(grep -shoE '[0-9]+' /etc/almalinux-release /etc/rocky-release /etc/centos-release | head -1)
64-
elif [[ -e /etc/redhat-release ]]; then
65-
os="rhel"
66-
os_version=$(grep -oE '[0-9]+' /etc/redhat-release | head -1)
6789
elif [[ -e /etc/fedora-release ]]; then
6890
os="fedora"
6991
os_version=$(grep -oE '[0-9]+' /etc/fedora-release | head -1)
70-
elif [[ -e /etc/SUSE-brand && "$(head -1 /etc/SUSE-brand)" == "openSUSE" ]]; then
92+
elif [[ -e /etc/redhat-release ]]; then
93+
os="rhel"
94+
os_version=$(grep -oE '[0-9]+' /etc/redhat-release | head -1)
95+
elif [[ -e /etc/SUSE-brand && "$(head -1 /etc/SUSE-brand)" == "openSUSE" ]] \
96+
|| grep -qs '^ID=.*opensuse' /etc/os-release; then
7197
os="openSUSE"
72-
os_version=$(tail -1 /etc/SUSE-brand | grep -oE '[0-9\\.]+')
98+
if [[ -e /etc/SUSE-brand ]]; then
99+
os_version=$(tail -1 /etc/SUSE-brand | grep -oE '[0-9\\.]+')
100+
else
101+
os_version=$(grep 'VERSION_ID' /etc/os-release | cut -d '"' -f 2)
102+
fi
73103
else
74104
exiterr "This installer seems to be running on an unsupported distribution.
75105
Supported distros are Ubuntu, Debian, AlmaLinux, Rocky Linux, CentOS, RHEL, Fedora and openSUSE."

0 commit comments

Comments
 (0)