EC2で、ディストリビューションによってシェルスクリプトの処理を変えたい場合についてです。
/etc/os-releaseでディストリビューションは判定できます。
lsb-releaseを使おうと思ったんですが、EC2のAmazonLinuxやCentOSにはデフォルトでインストールされていないみたいです。
/etc/os-release(CentOS)
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
/etc/system-release(AmazonLinux)
NAME="Amazon Linux AMI"
VERSION="2016.03"
ID="amzn"
ID_LIKE="rhel fedora"
VERSION_ID="2016.03"
PRETTY_NAME="Amazon Linux AMI 2016.03"
ANSI_COLOR="0;33"
CPE_NAME="cpe:/o:amazon:linux:2016.03:ga"
HOME_URL="http://aws.amazon.com/amazon-linux-ami/"
/etc/system-release(Ubuntu)
NAME="Ubuntu"
VERSION="14.04.3 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.3 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
このファイルの文字列をチェックすることで、処理を変えることができます。
RELEASE_FILE=/etc/os-release
if grep -e '^NAME="CentOS' $RELEASE_FILE >/dev/null; then
CentOSの時の処理
elif grep -e '^NAME="Amazon' $RELEASE_FILE >/dev/null; then
Amazon Linuxの時の処理
elif grep -e '^NAME="Ubuntu' $RELEASE_FILE >/dev/null; then
Ubuntuの時の処理
else
その他の処理
fi
もっといい方法があれば教えて下さいー