?>/script>'; } ?> detectando distribución linux desde scripts bash (la forma inteligente) Widgets Magazine

Autor Tema: detectando distribución linux desde scripts bash (la forma inteligente)  (Leído 7618 veces)

0 Usuarios y 1 Visitante están viendo este tema.

alist3r

  • Visitante
observando el código de algunos scripts en bash realizados por vosotros, desarrolladores colaboradores, me doy cuenta de que estáis intentando determinar en qué distro linux se ejecutan vuestros scripts para ajustar variables, paths, etc. Es algo completamente normal.

Y hasta hace un tiempo, era ciertamente un problema. Teníamos que usar mecanismos de lo más varipinto, creados por nosotros, no estándar y sobre todo muy ineficientes.
Ni siquiera éramos capaces de detectar algo tan común como una Debian, una Gentoo, un CentOS...

Pero desde hace ya un tiempo, tenemos el sistema Linux Standard Base, con el cual es compatible cualquier distribución reciente (y si no lo es, deberia).

Citar
alex@engetsu:~$ lsb_release -a
No LSB modules are available.
Distributor ID:   Debian
Description:   Debian GNU/Linux 7.1 (wheezy)
Release:   7.1
Codename:   wheezy

este es el PRIMER (y en la mayoria de ocasiones el único) intento que deberíais estar realizando en sistemas modernos para detectar la version y el sabor de la distro.

Por favor, tomaos la molestia de investigar, estudiar y usar los estándares; tradicionalmente, los sistemas GNU/Linux han sufrido la anarquia de sus posibilidades y sus bifurcaciones, y se está intentando arreglar porque si no, los perjudicados somos todos.
Cuanto mayor sea la difusión de vuestros scripts, mayor es la responsabilidad que tenéis de hacer las cosas bien hechas.

Para cualquier duda sobre la interacción de vuestros scripts con los sistemas, podéis contactarme y con gusto os ayudo a hacer las cosas mejor.
¡Gracias!

Desconectado geminis_demon

  • Colaborador
  • *
  • Mensajes: 2378
  • Prácticas precisas precisan práctica
Re: detectando distribución linux desde scripts bash (la forma inteligente)
« Respuesta #1 en: 29-09-2013, 14:25 (Domingo) »
Bueno ya que estamos en el foro donde se desarrolla Wifislax, creo que es importante decir que el comando que indica alister no os funcionará en Wifislax.

En Wifislax podéis ejecutar "os-prober", que no solo te dice el sistema operativo en el que se está ejecutando el script, también detecta todos los sistemas operativos de todos vuestros discos y particiones  ;)
« Última modificación: 29-09-2013, 14:26 (Domingo) por geminis_demon »

alist3r

  • Visitante
Re: detectando distribución linux desde scripts bash (la forma inteligente)
« Respuesta #2 en: 29-09-2013, 14:27 (Domingo) »
geminis_daemon

adivina en que estoy trabajando?

en resolver esa "desadhesión" de wifislax para su proxima version, porque no nos favorece en absoluto.

de hecho, una cosa que no entiendo cómo ha llegado a pasar, es que un sistema slackware original está adherido al estándar.
FALSO: fuente incorrecta. informándome en el origen, desmiento esto. Se habia comentado la posibilidad pero no se implementó totalmente, solo unos enlaces simbólicos y algún que otro fichero extra

de todos modos, echale un vistazo a esto. creo que tú eres de los que más partido le podrás sacar:

http://www.linux-tips-and-tricks.de/index.php/latest/how-to-find-out-which-linux-distribution-a-bash-script-runs-on.html
« Última modificación: 29-09-2013, 15:23 (Domingo) por alister »

Desconectado geminis_demon

  • Colaborador
  • *
  • Mensajes: 2378
  • Prácticas precisas precisan práctica
Re: detectando distribución linux desde scripts bash (la forma inteligente)
« Respuesta #3 en: 29-09-2013, 15:10 (Domingo) »
Uhm.. pues esta bien conocer alternativas, pero personalmente creo que os-prober es mas efectivo, ya que hace múltiples comprobaciones para determinar el nombre y versión de la distribuición linux.

En cambio lsb_release solo comprueba que exista el fichero " /etc/lsb-release", y si este no existe ya no funcionará, al menos eso es lo que he entendido en la traducción de google  del enlace que me has pasado, corrigeme si me equiboco.

alist3r

  • Visitante
Re: detectando distribución linux desde scripts bash (la forma inteligente)
« Respuesta #4 en: 29-09-2013, 15:28 (Domingo) »
Uhm.. pues esta bien conocer alternativas, pero personalmente creo que os-prober es mas efectivo, ya que hace múltiples comprobaciones para determinar el nombre y versión de la distribuición linux.

En cambio lsb_release solo comprueba que exista el fichero " /etc/lsb-release", y si este no existe ya no funcionará, al menos eso es lo que he entendido en la traducción de google  del enlace que me has pasado, corrigeme si me equiboco.

traducción de google?

no sabes inglés...

ooopss...

haberlo dicho, que te lo resumía xD

el tema es que puedes poner un fichero de tipo:

/etc/debian-release
/etc/wifislax-release
/etc/ubuntu-release

y junto con el comando lsb_release, que estaria pensado para buscar ese tipo de patrones, te devolveria toda la información necesaria.

de todos modos, el estilo de osprober es superior en algunos aspectos, aunque necesita que el binario/script sea conocedor de las diferentes caracteristicas de cada SO, y por tanto requiere un esfuerzo constante y siempre es imperfecto.

son como dos acercamientos, mahoma va a la montaña (un pequeño esfuerzo por parte de las diferentes distros, simplemente añadiendo un binario y un fichero), o la montaña va a mahoma (tienes que hacer algo como osprober e ir detrás de todas las distros, tratando de conocer sus entresijos, y relegando a las mas pequeñas e impopulares a que nunca puedan ser detectadas correctamente.

en cualquier caso, desde el punto de vista del scripting, ¿qué nos cuesta implementar ambas cosas?
nada, en comparación con implementar mecanismos más "rupestres" que siempre nos van a dar mas problemas.

de paso: tendriamos que desarrollar una biblioteca de funciones bash para cosas repetitivas como manejo de cadenas, entradas/salidas, tareas de sistemas, etc. no crees? veo código repetido everywhere.
« Última modificación: 29-09-2013, 15:30 (Domingo) por alister »

5.1

  • Visitante
Re: detectando distribución linux desde scripts bash (la forma inteligente)
« Respuesta #5 en: 06-05-2015, 10:20 (Miércoles) »
Soy consciente que este post tiene su tiempo, pero considero que es mejor exponer aquí mi pregunta que abrir un hilo nuevo...

Bueno, han pasado casi dos años desde que hablasteis del tema y por lo que veo a dia de hoy Wifislax no implementa la solución propuesta por Alister.
LLevo un rato buscando una posible solución "universal" para este problema, pero la verdad que no encuentro nada que me convenza. Despues de haber probado bastantes cosas (os-prober incluido) la forma que mejor me funciona es :

Citar
if [ -f "/etc/wifislax-version" ]
then
   DISTRIBUCION=$(cat /etc/wifislax-version | awk {' print $1 '})
elif [ -f "/usr/bin/lsb_release" ]
then
   DISTRIBUCION=$(lsb_release -i -s)
else
   DISTRIBUCION="?"
fi

Así que si alguien conoce una forma mejor y/o mas elegante ya sabeis soy todo oidos ojos  ;D
« Última modificación: 06-05-2015, 10:22 (Miércoles) por 5.1 »

warcry

  • Visitante
Re: detectando distribución linux desde scripts bash (la forma inteligente)
« Respuesta #6 en: 06-05-2015, 17:12 (Miércoles) »
uname -a    ???

supongo que con eso ves si es wifislax, ubuntu, etc

dentro de todos los posibles wifislax, tan facil como compilar el kernel con la version concreta, entonces asi con uname no tendrias problemas.

para las demas distribuciones linux, no se me ocurre nada fuera de lo generico

5.1

  • Visitante
Re: detectando distribución linux desde scripts bash (la forma inteligente)
« Respuesta #7 en: 06-05-2015, 17:33 (Miércoles) »
uname -a    ???

supongo que con eso ves si es wifislax, ubuntu, etc

dentro de todos los posibles wifislax, tan facil como compilar el kernel con la version concreta, entonces asi con uname no tendrias problemas.

para las demas distribuciones linux, no se me ocurre nada fuera de lo generico

Esta es mi salida a uname -a
Citar
Linux Hades 3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

Estoy con Linux Mint y con eso me detecta que es un derivado de Ubuntu, pero no afina.. así que eso no me sirve..... :(

warcry

  • Visitante
Re: detectando distribución linux desde scripts bash (la forma inteligente)
« Respuesta #8 en: 06-05-2015, 19:37 (Miércoles) »


Esta es mi salida a uname -a
Citar
Linux Hades 3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

Estoy con Linux Mint y con eso me detecta que es un derivado de Ubuntu, pero no afina.. así que eso no me sirve..... :(

jajajaja, eso pasa cuando es un refrito de un cocinado, jajajajajjaj

hombre, supongo que la versión exacta la necesitas me imagino para saber si tus script tienen que correr sobre una distribución de base debian, slackware etc.

si te sale ubuntu entiendo que la base es un debian con lo cual la estructura de carpetas son las de un debian.

si no es así, y es porque estas con el tema de actualizaciones y necesitas la versión exacta porque una distribucion en concreto lleva una libreria u otra, no se me ocurre nada.