1
0
mirror of synced 2024-11-25 22:36:04 +03:00

Improve OS detection

- Improve OS detection and clean up
This commit is contained in:
hwdsl2 2022-08-10 22:41:55 -05:00
parent 8973b8d6c0
commit e2f211c678
8 changed files with 148 additions and 150 deletions

View File

@ -36,44 +36,16 @@ check_root() {
} }
check_os() { check_os() {
os_type=centos
rh_file="/etc/redhat-release"
if grep -qs "Red Hat" "$rh_file"; then
os_type=rhel
fi
[ -f /etc/oracle-release ] && os_type=ol
if grep -qs "release 7" "$rh_file" || grep -qs "release 8" "$rh_file" \
|| grep -qs "release 9" "$rh_file"; then
grep -qs -i rocky "$rh_file" && os_type=rocky
grep -qs -i alma "$rh_file" && os_type=alma
elif grep -qs "Amazon Linux release 2" /etc/system-release; then
os_type=amzn
else
os_type=$(lsb_release -si 2>/dev/null) os_type=$(lsb_release -si 2>/dev/null)
[ -z "$os_type" ] && [ -f /etc/os-release ] && os_type=$(. /etc/os-release && printf '%s' "$ID") [ -z "$os_type" ] && [ -f /etc/os-release ] && os_type=$(. /etc/os-release && printf '%s' "$ID")
case $os_type in case $os_type in
[Uu]buntu)
os_type=ubuntu
;;
[Dd]ebian)
os_type=debian
;;
[Rr]aspbian)
os_type=raspbian
;;
[Aa]lpine) [Aa]lpine)
os_type=alpine os_type=alpine
;; ;;
*) *)
cat 1>&2 <<'EOF' os_type=other
Error: This script only supports one of the following OS:
Ubuntu, Debian, CentOS/RHEL, Rocky Linux, AlmaLinux,
Oracle Linux, Amazon Linux 2 or Alpine Linux
EOF
exit 1
;; ;;
esac esac
fi
} }
check_libreswan() { check_libreswan() {

View File

@ -46,23 +46,26 @@ check_container() {
} }
check_os() { check_os() {
os_type=centos
os_arch=$(uname -m | tr -dc 'A-Za-z0-9_-')
rh_file="/etc/redhat-release" rh_file="/etc/redhat-release"
if grep -qs "Red Hat" "$rh_file"; then if [ -f "$rh_file" ]; then
os_type=centos
if grep -q "Red Hat" "$rh_file"; then
os_type=rhel os_type=rhel
fi fi
[ -f /etc/oracle-release ] && os_type=ol [ -f /etc/oracle-release ] && os_type=ol
grep -qs -i rocky "$rh_file" && os_type=rocky grep -qi rocky "$rh_file" && os_type=rocky
grep -qs -i alma "$rh_file" && os_type=alma grep -qi alma "$rh_file" && os_type=alma
if grep -qs "release 7" "$rh_file"; then if grep -q "release 7" "$rh_file"; then
os_ver=7 os_ver=7
elif grep -qs "release 8" "$rh_file"; then elif grep -q "release 8" "$rh_file"; then
os_ver=8 os_ver=8
grep -qi stream "$rh_file" && os_ver=8s grep -qi stream "$rh_file" && os_ver=8s
elif grep -qs "release 9" "$rh_file"; then elif grep -q "release 9" "$rh_file"; then
os_ver=9 os_ver=9
grep -qi stream "$rh_file" && os_ver=9s grep -qi stream "$rh_file" && os_ver=9s
else
exiterr "This script only supports CentOS/RHEL 7-9."
fi
elif grep -qs "Amazon Linux release 2" /etc/system-release; then elif grep -qs "Amazon Linux release 2" /etc/system-release; then
os_type=amzn os_type=amzn
os_ver=2 os_ver=2
@ -154,7 +157,7 @@ confirm_or_abort() {
show_header() { show_header() {
cat <<'EOF' cat <<'EOF'
IKEv2 Script Copyright (c) 2020-2022 Lin Song 9 Aug 2022 IKEv2 Script Copyright (c) 2020-2022 Lin Song 10 Aug 2022
EOF EOF
} }
@ -1151,6 +1154,7 @@ EOF
} }
apply_ubuntu1804_nss_fix() { apply_ubuntu1804_nss_fix() {
os_arch=$(uname -m | tr -dc 'A-Za-z0-9_-')
if [ "$os_type" = "ubuntu" ] && [ "$os_ver" = "bustersid" ] && [ "$os_arch" = "x86_64" ]; then if [ "$os_type" = "ubuntu" ] && [ "$os_ver" = "bustersid" ] && [ "$os_arch" = "x86_64" ]; then
nss_url1="https://mirrors.kernel.org/ubuntu/pool/main/n/nss" nss_url1="https://mirrors.kernel.org/ubuntu/pool/main/n/nss"
nss_url2="https://mirrors.kernel.org/ubuntu/pool/universe/n/nss" nss_url2="https://mirrors.kernel.org/ubuntu/pool/universe/n/nss"

View File

@ -69,25 +69,29 @@ EOF
} }
check_os() { check_os() {
os_type=centos
rh_file="/etc/redhat-release" rh_file="/etc/redhat-release"
if grep -qs "Red Hat" "$rh_file"; then if [ -f "$rh_file" ]; then
os_type=centos
if grep -q "Red Hat" "$rh_file"; then
os_type=rhel os_type=rhel
fi fi
[ -f /etc/oracle-release ] && os_type=ol [ -f /etc/oracle-release ] && os_type=ol
grep -qs -i rocky "$rh_file" && os_type=rocky grep -qi rocky "$rh_file" && os_type=rocky
grep -qs -i alma "$rh_file" && os_type=alma grep -qi alma "$rh_file" && os_type=alma
if grep -qs "release 7" "$rh_file"; then if grep -q "release 7" "$rh_file"; then
os_ver=7 os_ver=7
elif grep -qs "release 8" "$rh_file"; then elif grep -q "release 8" "$rh_file"; then
os_ver=8 os_ver=8
grep -qi stream "$rh_file" && os_ver=8s grep -qi stream "$rh_file" && os_ver=8s
if [ "$os_type" = "centos" ] && [ "$os_ver" = "8" ]; then if [ "$os_type$os_ver" = "centos8" ]; then
exiterr "CentOS Linux 8 is EOL and not supported." exiterr "CentOS Linux 8 is EOL and not supported."
fi fi
elif grep -qs "release 9" "$rh_file"; then elif grep -q "release 9" "$rh_file"; then
os_ver=9 os_ver=9
grep -qi stream "$rh_file" && os_ver=9s grep -qi stream "$rh_file" && os_ver=9s
else
exiterr "This script only supports CentOS/RHEL 7-9."
fi
elif grep -qs "Amazon Linux release 2" /etc/system-release; then elif grep -qs "Amazon Linux release 2" /etc/system-release; then
os_type=amzn os_type=amzn
os_ver=2 os_ver=2

View File

@ -34,16 +34,18 @@ check_root() {
} }
check_os() { check_os() {
os_type=centos
rh_file="/etc/redhat-release" rh_file="/etc/redhat-release"
if grep -qs "Red Hat" "$rh_file"; then if [ -f "$rh_file" ]; then
os_type=centos
if grep -q "Red Hat" "$rh_file"; then
os_type=rhel os_type=rhel
fi fi
[ -f /etc/oracle-release ] && os_type=ol [ -f /etc/oracle-release ] && os_type=ol
if grep -qs "release 7" "$rh_file" || grep -qs "release 8" "$rh_file" \ grep -qi rocky "$rh_file" && os_type=rocky
|| grep -qs "release 9" "$rh_file"; then grep -qi alma "$rh_file" && os_type=alma
grep -qs -i rocky "$rh_file" && os_type=rocky if ! grep -q -E "release (7|8|9)" "$rh_file"; then
grep -qs -i alma "$rh_file" && os_type=alma exiterr "This script only supports CentOS/RHEL 7-9."
fi
elif grep -qs "Amazon Linux release 2" /etc/system-release; then elif grep -qs "Amazon Linux release 2" /etc/system-release; then
os_type=amzn os_type=amzn
else else

View File

@ -37,25 +37,29 @@ check_vz() {
} }
check_os() { check_os() {
os_type=centos
rh_file="/etc/redhat-release" rh_file="/etc/redhat-release"
if grep -qs "Red Hat" "$rh_file"; then if [ -f "$rh_file" ]; then
os_type=centos
if grep -q "Red Hat" "$rh_file"; then
os_type=rhel os_type=rhel
fi fi
[ -f /etc/oracle-release ] && os_type=ol [ -f /etc/oracle-release ] && os_type=ol
grep -qs -i rocky "$rh_file" && os_type=rocky grep -qi rocky "$rh_file" && os_type=rocky
grep -qs -i alma "$rh_file" && os_type=alma grep -qi alma "$rh_file" && os_type=alma
if grep -qs "release 7" "$rh_file"; then if grep -q "release 7" "$rh_file"; then
os_ver=7 os_ver=7
elif grep -qs "release 8" "$rh_file"; then elif grep -q "release 8" "$rh_file"; then
os_ver=8 os_ver=8
grep -qi stream "$rh_file" && os_ver=8s grep -qi stream "$rh_file" && os_ver=8s
if [ "$os_type" = "centos" ] && [ "$os_ver" = "8" ]; then if [ "$os_type$os_ver" = "centos8" ]; then
exiterr "CentOS Linux 8 is EOL and not supported." exiterr "CentOS Linux 8 is EOL and not supported."
fi fi
elif grep -qs "release 9" "$rh_file"; then elif grep -q "release 9" "$rh_file"; then
os_ver=9 os_ver=9
grep -qi stream "$rh_file" && os_ver=9s grep -qi stream "$rh_file" && os_ver=9s
else
exiterr "This script only supports CentOS/RHEL 7-9."
fi
elif grep -qs "Amazon Linux release 2" /etc/system-release; then elif grep -qs "Amazon Linux release 2" /etc/system-release; then
os_type=amzn os_type=amzn
os_ver=2 os_ver=2

View File

@ -40,26 +40,30 @@ check_vz() {
} }
check_os() { check_os() {
os_type=centos
rh_file="/etc/redhat-release" rh_file="/etc/redhat-release"
if grep -qs "Red Hat" "$rh_file"; then if [ -f "$rh_file" ]; then
os_type=centos
if grep -q "Red Hat" "$rh_file"; then
os_type=rhel os_type=rhel
fi fi
[ -f /etc/oracle-release ] && os_type=ol [ -f /etc/oracle-release ] && os_type=ol
grep -qs -i rocky "$rh_file" && os_type=rocky grep -qi rocky "$rh_file" && os_type=rocky
grep -qs -i alma "$rh_file" && os_type=alma grep -qi alma "$rh_file" && os_type=alma
if grep -qs "release 7" "$rh_file"; then if grep -q "release 7" "$rh_file"; then
os_ver=7 os_ver=7
elif grep -qs "release 8" "$rh_file"; then elif grep -q "release 8" "$rh_file"; then
os_ver=8 os_ver=8
grep -qi stream "$rh_file" && os_ver=8s grep -qi stream "$rh_file" && os_ver=8s
if [ "$os_type" = "centos" ] && [ "$os_ver" = "8" ]; then if [ "$os_type$os_ver" = "centos8" ]; then
exiterr "CentOS Linux 8 is EOL and not supported." exiterr "CentOS Linux 8 is EOL and not supported."
fi fi
elif grep -qs "release 9" "$rh_file"; then elif grep -q "release 9" "$rh_file"; then
os_ver=9 os_ver=9
grep -qi stream "$rh_file" && os_ver=9s grep -qi stream "$rh_file" && os_ver=9s
else else
exiterr "This script only supports CentOS/RHEL 7-9."
fi
else
cat 1>&2 <<'EOF' cat 1>&2 <<'EOF'
Error: This script only supports one of the following OS: Error: This script only supports one of the following OS:
CentOS/RHEL, Rocky Linux, AlmaLinux or Oracle Linux CentOS/RHEL, Rocky Linux, AlmaLinux or Oracle Linux
@ -166,7 +170,7 @@ install_pkgs_2() {
erp="--enablerepo" erp="--enablerepo"
rp1="$erp=*server-*optional*" rp1="$erp=*server-*optional*"
rp2="$erp=*releases-optional*" rp2="$erp=*releases-optional*"
if [ "$os_type" = "ol" ] && [ "$os_ver" = "7" ]; then if [ "$os_type$os_ver" = "ol7" ]; then
rp2="$erp=ol7_optional_latest" rp2="$erp=ol7_optional_latest"
fi fi
if [ "$os_ver" = "7" ]; then if [ "$os_ver" = "7" ]; then

View File

@ -69,25 +69,29 @@ EOF
} }
check_os() { check_os() {
os_type=centos
rh_file="/etc/redhat-release" rh_file="/etc/redhat-release"
if grep -qs "Red Hat" "$rh_file"; then if [ -f "$rh_file" ]; then
os_type=centos
if grep -q "Red Hat" "$rh_file"; then
os_type=rhel os_type=rhel
fi fi
[ -f /etc/oracle-release ] && os_type=ol [ -f /etc/oracle-release ] && os_type=ol
grep -qs -i rocky "$rh_file" && os_type=rocky grep -qi rocky "$rh_file" && os_type=rocky
grep -qs -i alma "$rh_file" && os_type=alma grep -qi alma "$rh_file" && os_type=alma
if grep -qs "release 7" "$rh_file"; then if grep -q "release 7" "$rh_file"; then
os_ver=7 os_ver=7
elif grep -qs "release 8" "$rh_file"; then elif grep -q "release 8" "$rh_file"; then
os_ver=8 os_ver=8
grep -qi stream "$rh_file" && os_ver=8s grep -qi stream "$rh_file" && os_ver=8s
if [ "$os_type" = "centos" ] && [ "$os_ver" = "8" ]; then if [ "$os_type$os_ver" = "centos8" ]; then
exiterr "CentOS Linux 8 is EOL and not supported." exiterr "CentOS Linux 8 is EOL and not supported."
fi fi
elif grep -qs "release 9" "$rh_file"; then elif grep -q "release 9" "$rh_file"; then
os_ver=9 os_ver=9
grep -qi stream "$rh_file" && os_ver=9s grep -qi stream "$rh_file" && os_ver=9s
else
exiterr "This script only supports CentOS/RHEL 7-9."
fi
elif grep -qs "Amazon Linux release 2" /etc/system-release; then elif grep -qs "Amazon Linux release 2" /etc/system-release; then
os_type=amzn os_type=amzn
os_ver=2 os_ver=2

View File

@ -74,26 +74,30 @@ EOF
} }
check_os() { check_os() {
os_type=centos
rh_file="/etc/redhat-release" rh_file="/etc/redhat-release"
if grep -qs "Red Hat" "$rh_file"; then if [ -f "$rh_file" ]; then
os_type=centos
if grep -q "Red Hat" "$rh_file"; then
os_type=rhel os_type=rhel
fi fi
[ -f /etc/oracle-release ] && os_type=ol [ -f /etc/oracle-release ] && os_type=ol
grep -qs -i rocky "$rh_file" && os_type=rocky grep -qi rocky "$rh_file" && os_type=rocky
grep -qs -i alma "$rh_file" && os_type=alma grep -qi alma "$rh_file" && os_type=alma
if grep -qs "release 7" "$rh_file"; then if grep -q "release 7" "$rh_file"; then
os_ver=7 os_ver=7
elif grep -qs "release 8" "$rh_file"; then elif grep -q "release 8" "$rh_file"; then
os_ver=8 os_ver=8
grep -qi stream "$rh_file" && os_ver=8s grep -qi stream "$rh_file" && os_ver=8s
if [ "$os_type" = "centos" ] && [ "$os_ver" = "8" ]; then if [ "$os_type$os_ver" = "centos8" ]; then
exiterr "CentOS Linux 8 is EOL and not supported." exiterr "CentOS Linux 8 is EOL and not supported."
fi fi
elif grep -qs "release 9" "$rh_file"; then elif grep -q "release 9" "$rh_file"; then
os_ver=9 os_ver=9
grep -qi stream "$rh_file" && os_ver=9s grep -qi stream "$rh_file" && os_ver=9s
else else
exiterr "This script only supports CentOS/RHEL 7-9."
fi
else
cat 1>&2 <<'EOF' cat 1>&2 <<'EOF'
Error: This script only supports one of the following OS: Error: This script only supports one of the following OS:
CentOS/RHEL, Rocky Linux, AlmaLinux or Oracle Linux CentOS/RHEL, Rocky Linux, AlmaLinux or Oracle Linux