Cada distribuição (apesar dos esforços de lsb) usa ou pode usar (ou mesmo pode faltar) um arquivo diferente em / etc / para declarar qual é seu nome e versão.
Você deve adicionar uma condição ao seu script para cada um. Também leve em consideração que algumas distros são derivadas de outras importantes e podem ou não adaptar seus arquivos de versão.
Se você não quiser reinventar a roda, você pode usar outras pessoas para alcançar o que você está procurando. Por exemplo, em python, no módulo plataforma , existe um método para adivinhar a distribuição:
Help on function linux_distribution in module platform:
linux_distribution(distname='', version='', id='', supported_dists=('SuSE', 'debian', 'fedora', 'redhat', 'centos', 'mandrake', 'mandriva', 'rocks', 'slackware', 'yellowdog', 'gentoo', 'UnitedLinux', 'turbolinux'), full_distribution_name=1)
Tries to determine the name of the Linux OS distribution name.
The function first looks for a distribution release file in
/etc and then reverts to _dist_try_harder() in case no
suitable files are found.
supported_dists may be given to define the set of Linux
distributions to look for. It defaults to a list of currently
supported Linux distributions identified by their release file
name.
If full_distribution_name is true (default), the full
distribution read from the OS is returned. Otherwise the short
name taken from supported_dists is used.
Returns a tuple (distname,version,id) which default to the
args given as parameters.
por exemplo:
In [1]: import platform
In [2]: platform.linux_distribution()
Out[2]: ('Ubuntu', '11.10', 'oneiric')