elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Sistemas Operativos
| |-+  GNU/Linux (Moderador: MinusFour)
| | |-+  [proyecto] Script recopilador de información para asistencia técnica
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [proyecto] Script recopilador de información para asistencia técnica  (Leído 7,921 veces)
Festor
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.955


Ver Perfil
[proyecto] Script recopilador de información para asistencia técnica
« en: 11 Diciembre 2009, 12:01 pm »

Bueno, no hace mucho se me ocurrió intentar hacer una forma "sencilla" e "intuitiva" para que los novatos en Linux (y los no tan novatos) puedan proporciona más información en sus post sobre los posibles problemas que tengan con su sistema Linux...

La idea de este script es que funcione en la mayor cantidad de distros Linux y en especial las orientadas al usuario final, es decir, que sea lo más independiente posible... pero dado que no tengo todo el tiempo del mundo para andar virtualizando distros y testeando el script pues lo libero para que lo pruebe quien quiera...

De momento lo he probado en Ubuntu 9.04 y 9.10 (GNOME y KDE) y en Fedora 12 (GNOME) y parece que no da problemas salvo por algunas cosas como que:
-En Fedora hay ciertos archivos que no son accesibles (ni si quiera en modo lectura) desde un usuario no-root...
-El script aun no reconoce la posible existencia de GRUB2 y presupone que si se utiliza GRUB siempre se utilizará la versión antigua...

ah! Otra cosa.. ya sé que hay comandos que requieren de root y que proporcionarían más información pero en un principio no tengo intención de "obligar" al usuario a recurrir a root para usar este script....

Por último decir que no soy un experto en bash así que es más que probable que existan mejores formas (menos código o más ordenado) de hacer lo que hace este script por ello estoy abierto a cualquier idea, corrección, sugerencia y/o aportación...

En principio estas son algunas de las cosas que me gustaría implementar...
- idear alguna forma para añadir las etiquetas [ code ] a la salida de los comandos de forma que al recibir la información esta ya venga en un formato adecuado para su visualización en el foro.
- ¿algún sistema para subir la información a pastebins?
- ...

Dentro de poco espero subirlo a un servidor para que se pueda descargar e instalar de una forma más cómoda.

Aquí tenéis un captura de como se ver en una terminal:


Código
  1. #!/bin/bash
  2. #   Script recopilador de informacion by Festor para la comunidad de elhacker.net
  3. #
  4. #   Una forma rapida y sencilla de acceder a los principales comandos y archivos que proporcionan
  5. #  informacion sobre el sistema con el fin de que un usuario, sin tener apenas conocimiento del sistema,
  6. #  pueda proporcionar mas datos en el caso de que tenga algun problema con su sistema linux.
  7. #
  8. #   La idea es que al elegir una opcion el contenido del fichero o la salida del comando se vuelque en un fichero
  9. #  de texto plano para simplificar su manejo y posible edicion. De esta forma uno puede copiar y pegar
  10. #  la informacion de una manera un poco mas "facil"... :-/
  11. #
  12. #   Este script es de libre distribucion, edicion y uso, es decir, podeis hacer lo que os de la gana con el... xD
  13. #
  14.  
  15. # Gestores de paquetes de software y directorios de ficheros de configuracion de repositorios
  16. yum=/usr/bin/yum
  17. yum_conf=/etc/yum.conf
  18. yum_repos=/etc/yum.repos.d
  19. dpkg=/usr/bin/dpkg
  20. dpkg_sources=/etc/apt/sources.list
  21. dpkg_repos=/etc/apt/sources.list.d
  22.  
  23. # Gestores de arranque
  24. lilo=/etc/lilo.conf
  25. grub=/boot/grub/menu.lst
  26.  
  27. # Otros ficheros importantes
  28. xorg=/etc/X11/xorg.conf
  29. fstab=/etc/fstab
  30.  
  31. # La idea es que su uso fuera intuitivo... pero por si acaso avisamos de como funciona...
  32. function visualizar_ayuda {
  33.  tput cup 5 4; echo -e " En la pantalla principal elige la opcion deseada pulsando la tecla"
  34.  tput cup 6 4; echo -e "que corresponde a la letra resaltada, acto seguido aparecera un menu"
  35.  tput cup 7 4; echo -e "desplegable en el que debes seleccionar la accion a realizar en base"
  36.  tput cup 8 4; echo -e "al numero resaltado de su izquierda. Espero que te sea de utilidad!!"
  37.  tput cup 10 4; echo -e "by Festor... ^_^"
  38.  tput cup 11 4; echo -e "para la comunidad de elhacker.net"
  39. }
  40.  
  41. # Meto el menu en una funcion porque lo vamos a llamar repetidas veces
  42. function menu {
  43.  clear
  44.  tput cup 0 4; echo -e "---------------------------------------------------------"
  45.  tput cup 1 4; echo -e "..:: Bienvenido al script recopilador de informacion ::.."
  46.  tput cup 2 4; echo -e "---------------------------------------------------------"
  47.  tput cup 3 1; echo -e "Info del sistema"
  48.  tput cup 3 1; echo -e "\033[1;32mI\033[0m"
  49.  tput cup 3 20; echo -e "Redes"
  50.  tput cup 3 20; echo -e "\033[1;32mR\033[0m"
  51.  tput cup 3 28; echo -e "Hardware"
  52.  tput cup 3 28; echo -e "\033[1;32mH\033[0m"
  53.  tput cup 3 39; echo -e "Programas"
  54.  tput cup 3 39; echo -e "\033[1;32mP\033[0m"
  55.  tput cup 3 51; echo -e "Ayuda"
  56.  tput cup 3 51; echo -e "\033[1;32mA\033[0m"
  57.  tput cup 3 59; echo -e "Salir"
  58.  tput cup 3 59; echo -e "\033[1;32mS\033[0m"
  59. }
  60.  
  61. # Dado que no queremos ensuciar el directorio actual con decenas de ficheros nos pasamos a /tmp
  62. cd /tmp
  63.  
  64. # Llamamos al menu
  65. menu
  66.  
  67. # Esto sirve para que la ayuda se muestre en la primera ejecucion del script.
  68. # En sucesivas ejecuciones no deberia aparecer mas la ayuda al menos que se borre el
  69. # fichero "ayuda_leida" de /tmp (lo cual ocurre cuando reinicias la computadora).
  70. if ! [[ -e ayuda_leida ]]; then visualizar_ayuda && echo "Ya deberias saber como funciona el script" > ayuda_leida ; fi
  71.  
  72. # El funcionamiento es sencillo, despues de cada "case" se llama de nuevo al menu
  73. # para crear una ilusion de un menu desplegable.
  74. # No hay que olvidarse de que uno puede estar usando letras minusculas o mayusculas (= Bloq Mayus activado)
  75. while [[ "$opcion" != 's' ]] && [[ "$opcion" != 'S' ]]; do
  76.  read -s -n1 opcion
  77.  
  78.  case $opcion in
  79.   I|i)
  80.     menu
  81.     tput cup 4 1; echo -e "(1) Distribucion Linux"
  82.     tput cup 4 2; echo -e "\033[1;32m1\033[0m"
  83.     tput cup 5 1; echo -e "(2) Lista de particiones"
  84.     tput cup 5 2; echo -e "\033[1;32m2\033[0m"
  85.     tput cup 6 1; echo -e "(3) Gestor de arranque"
  86.     tput cup 6 2; echo -e "\033[1;32m3\033[0m"
  87.     tput cup 7 1; echo -e "(4) Usuarios logueados"
  88.     tput cup 7 2; echo -e "\033[1;32m4\033[0m"
  89.     tput cup 8 1; echo -e "(5) Registro del nucleo (dmesg)"
  90.     tput cup 8 2; echo -e "\033[1;32m5\033[0m"
  91.  
  92.     read -s -n1 subopcion
  93.     case $subopcion in
  94. 1|2|3|4|5) case $subopcion in
  95.                     # Nombre y version de la distribucion que usas mas la version del kernel Linux que tienes instalado.
  96.                     1)cat /etc/issue > LinuxDistro.txt && uname -r >> LinuxDistro.txt && xdg-open LinuxDistro.txt;;
  97.                     # Se que la info del fstab puede no ser la más actual ya que es estatica pero para acceder al 'fdisk -l' necesitas de root.
  98.                     2)cat $fstab > fstab.txt && xdg-open fstab.txt;;
  99.                     # Dado que no hay un gestor de arranque universal comprobamos cual es el que esta instalado.
  100.                     3)if [[ -e "$grub" ]] ; then cat $grub > MenuGrub.txt && xdg-open MenuGrub.txt ; fi ;
  101.                       if [[ -e "$lilo" ]] ; then cat $lilo > MenuLilo.txt && xdg-open MenuLilo.txt ; fi
  102.                       ;;
  103.                     4)who > UsersLogged.txt && xdg-open UsersLogged.txt;;
  104.                     5)dmesg > KernelLog.txt && xdg-open KernelLog.txt;;
  105.                   esac;
  106.                   menu;;
  107.      *)menu;;
  108.     esac;;
  109.  
  110.   R|r)
  111.     menu
  112.     tput cup 4 20; echo -e "(1) ifconfig"
  113.     tput cup 4 21; echo -e "\033[1;32m1\033[0m"
  114.     tput cup 5 20; echo -e "(2) Wifi & Wireless"
  115.     tput cup 5 21; echo -e "\033[1;32m2\033[0m"
  116.  
  117.     read -s -n1 subopcion
  118.     case $subopcion in
  119.       1|2) case $subopcion in
  120.              1)ifconfig > ifconfig.txt && xdg-open ifconfig.txt;;
  121.              2)iwconfig > iwconfig.txt && if ! [[ -s iwconfig.txt ]]; then echo -e "Posibles causas por las que ifconfig no ha devuelto informacion:\n->Tu equipo carece de un dispositivo wireless.\n->Tu equipo dispone de hardware wireless pero no hay un controlador/modulo accesible." > iwconfig.txt; fi && xdg-open iwconfig.txt;;
  122.            esac;
  123.            menu;;
  124.       *)menu;;
  125.     esac;;
  126.  
  127.   H|h)
  128.     menu
  129.     tput cup 4 28; echo -e "(1) Perifericos internos (lspci)"
  130.     tput cup 4 29; echo -e "\033[1;32m1\033[0m"
  131.     tput cup 5 28; echo -e "(2) Perifericos externos (lsusb)"
  132.     tput cup 5 29; echo -e "\033[1;32m2\033[0m"
  133.     tput cup 6 28; echo -e "(3) Servidor grafico (Xorg)"
  134.     tput cup 6 29; echo -e "\033[1;32m3\033[0m"
  135.     tput cup 7 28; echo -e "(4) Aceleracion grafica 3D"
  136.     tput cup 7 29; echo -e "\033[1;32m4\033[0m"
  137.     if [[ -e /usr/bin/lshw ]]; then
  138.     tput cup 8 28; echo -e "(5) Informacion mas detallada"
  139.     tput cup 8 29; echo -e "\033[1;32m5\033[0m"
  140.     fi
  141.  
  142.     read -s -n1 subopcion
  143.     case $subopcion in
  144.       1|2|3|4|5) case $subopcion in
  145.                      1)lspci -k > HardwarePCI.txt && xdg-open HardwarePCI.txt;;
  146.                      2)lsusb > HardwareUSB.txt && xdg-open HardwareUSB.txt;;
  147.                      3)if [[ -e "$xorg" ]] ; then cat $xorg > Xorg.txt && xdg-open Xorg.txt ; fi;;
  148.                      4)glxinfo | grep direct > DirectRendering.txt && xdg-open DirectRendering.txt;;
  149.                      5)lshw -short -sanitize > GeneralInfo.txt && xdg-open GeneralInfo.txt;;
  150.                      esac;
  151.                      menu;;
  152.       *)menu;;
  153.     esac;;
  154.  
  155.   P|p)
  156.     menu
  157.     tput cup 4 39; echo -e "(1) Repositorios en uso"
  158.     tput cup 4 40; echo -e "\033[1;32m1\033[0m"
  159.     tput cup 5 39; echo -e "(2) Paquetes de software instalados"
  160.     tput cup 5 40; echo -e "\033[1;32m2\033[0m"
  161.  
  162.     read -s -n1 subopcion
  163.     case $subopcion in
  164.       # La idea es simple: primero comprobamos si hay algun gestor instalado que este soportado
  165.       # y luego averiguamos cual comprobandolos uno a uno.
  166.       1|2) if [[ -e "$dpkg" || -e "$yum" ]] ; then
  167.               case $subopcion in
  168.                 1)if [[ -e "$dpkg_sources" ]] ; then cat $dpkg_sources $dpkg_repos/*.list > AptSources.txt && xdg-open AptSources.txt ; fi ;
  169.                   if [[ -e "$yum_conf" ]] ; then cat $yum_conf $yum_repos/*.repo > YumSources.txt && xdg-open YumSources.txt ; fi ;;
  170.                 2)if [[ -e "$dpkg" ]] ; then dpkg -l > DebPkgList.txt && xdg-open DebPkgList.txt ; fi ;
  171.                   if [[ -e "$yum" ]] ; then yum list installed > RpmPkgList.txt && xdg-open RpmPkgList.txt ; fi ;;
  172.               esac;
  173.            else
  174.              echo -e "Lo siento, tu gestor de paquetes (si es que tienes alguno) aun no esta soportado..\nPor favor, contacta con el creador de este script para ver si se puede arreglar" > ErrorProgramas.txt && xdg-open ErrorProgramas.txt
  175. fi
  176.            menu;;
  177.       *)menu;;
  178.     esac;;
  179.  
  180.   A|a)
  181.     menu
  182.     visualizar_ayuda
  183.  
  184.     read -s -n1 subopcion
  185.     case $subopcion in
  186.       *)menu;;
  187.     esac;;
  188.  
  189. # Cualquiera opcion no valida implica volver al menu.
  190.    *)
  191.      menu;;
  192.  esac
  193.  
  194. done
  195.  
  196. # Aunque estemos trabajando en /tmp es recomendable borrar los (posibles) ficheros creados ya que si
  197. # volvemos a ejecutar el script sin reiniciar el sistema es posible que causen "problemas".
  198. rm -f LinuxDistro.txt LinuxKernel.txt fstab.txt MenuGrub.txt MenuLilo.txt UsersLogged.txt KernelLog.txt \
  199.      ifconfig.txt iwconfig.txt HardwarePCI.txt HardwareUSB.txt Xorg.txt DirectRendering.txt GeneralInfo.txt \
  200.      AptSources.txt YumSources.txt ErrorProgramas.txt DebPkgList.txt RpmPkgList.txt
  201.  
  202. clear
  203. exit


« Última modificación: 1 Enero 2010, 19:23 pm por Festor » En línea

isseu


Desconectado Desconectado

Mensajes: 325


°º¤ø,¸¸,El conocimiento es poder°º¤ø,¸¸,ø¤º°`°º¤ø,


Ver Perfil WWW
Re: [proyecto] Script recopilador de información para asistencia técnica
« Respuesta #1 en: 11 Diciembre 2009, 12:16 pm »

Muy buen aporte
Te ganaste un -->  ;-)


En línea

Festor
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.955


Ver Perfil
Re: [proyecto] Script recopilador de información para asistencia técnica
« Respuesta #2 en: 11 Diciembre 2009, 12:39 pm »

Muy buen aporte
Te ganaste un -->  ;-)

La verdad es que el "aporte" en principio esta incompleto, la idea es intentar mejorarlo entre todos...  :-\
En línea

rh3nt0n


Desconectado Desconectado

Mensajes: 2.041


carpe diem, quam minimun credula postero .


Ver Perfil
Re: [proyecto] Script recopilador de información para asistencia técnica
« Respuesta #3 en: 12 Diciembre 2009, 12:05 pm »

Hola Festor;
Me parece una estupenda iniciativa, tanto para poder ayudar a los usuarios GNU/Linux, como para poder aprender mas sobre shell-script.
Le he estado echando un ojo, y creo que se podría sacar algo bastante curioso y útil de ello.
Por mi parte intentare modificar la parte de Redes, especialmente la parte de información wireless, ya que es la parte que mas "controlo".
Te sugiero que le pongas una chincheta al hilo para no tener que andar buscándolo... además en principio tendría que estar a mano, para que cualquier usuario pueda encontrarlo fácilmente y poder proporcionar información en referencia a la duda que pueda postear en el foro.
Saludos
En línea

Reconoce tu tierra, tu ritmo, reconoce te a ti mismo.
Festor
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.955


Ver Perfil
Re: [proyecto] Script recopilador de información para asistencia técnica
« Respuesta #4 en: 12 Diciembre 2009, 18:37 pm »

Te sugiero que le pongas una chincheta al hilo para no tener que andar buscándolo...

Hecho, aunque espero subirlo pronto a un servidor de descarga directa para que se pueda instalar y ejecutar de una forma más cómoda.
En línea

rh3nt0n


Desconectado Desconectado

Mensajes: 2.041


carpe diem, quam minimun credula postero .


Ver Perfil
Re: [proyecto] Script recopilador de información para asistencia técnica
« Respuesta #5 en: 12 Diciembre 2009, 20:16 pm »

Habla con el brujo,supongo que no tendrá inconveniente en colgarlo en la zona de descargas...pero no creo que sea tan difícil copiar el código, pegarlo en un archivo de texto, llamarlo asistencia_tecnica.sh y darle permisos de ejecución desde la consola... diría que es hasta beneficioso para el user.
Saludos
En línea

Reconoce tu tierra, tu ritmo, reconoce te a ti mismo.
[u]nsigned


Desconectado Desconectado

Mensajes: 2.397

JS/Node developer


Ver Perfil WWW
Re: [proyecto] Script recopilador de información para asistencia técnica
« Respuesta #6 en: 12 Enero 2010, 01:14 am »

Hola, bueno se me dio por proba tu Script Festor, y me eh topado con algo..

El script lo guarde como /home/faku/Documentos/infoMenu.sh

Al darle permisos de ejecucion chmod +x infoMenu.sh y ejecutarlo mediante ./infoMenu.sh todo bien. Pero al llamarlo desde sh me da el siguiente error:

Código:
faku@faku-desktop:~/Documentos$ sh infoMenu.sh 
infoMenu.sh: 32: function: not found



    -e  En la pantalla principal elige la opcion deseada pulsando la tecla
    -e que corresponde a la letra resaltada, acto seguido aparecera un menu
    -e desplegable en el que debes seleccionar la accion a realizar en base
    -e al numero resaltado de su izquierda. Espero que te sea de utilidad!!

    -e by Festor... ^_^
    -e para la comunidad de elhacker.net
infoMenu.sh: 39: Syntax error: "}" unexpected
faku@faku-desktop:~/Documentos$

Saludos
En línea

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!
Festor
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.955


Ver Perfil
Re: [proyecto] Script recopilador de información para asistencia técnica
« Respuesta #7 en: 12 Enero 2010, 11:18 am »

Al darle permisos de ejecucion chmod +x infoMenu.sh y ejecutarlo mediante ./infoMenu.sh todo bien. Pero al llamarlo desde sh me da el siguiente error:

Código:
faku@faku-desktop:~/Documentos$ sh infoMenu.sh

Es que el script está escrito en Bash (comando bash) no en Bourne Shell (comando sh) por lo que las "pequeñas" diferencias que existen entre uno y otro interprete pueden dar lugar a problemas

Así que, dos cosas:
-> Sobra la extensión .sh, a decir verdad no es necesario usar extensiones con los scripts ya que el encabezado del propio script (#!/bin/bash) es el que se encarga de llamar al interprete que necesite.
-> Para llamarlo, así como para llamar a cualquier script, después de darle los permisos necesarios de ejecución, deberías usar ./ es decir:

Código
  1. ./info

Y si sigue dándote problemas entonces... ¿podrías decirme en que distro Linux lo has probado? ¿En tu sistema existe el comando tput?

ah! y gracias por probarlo! cualquier comentario aporte y/o sugerencia siempre es bienvenido ;D
En línea

P-Joe

Desconectado Desconectado

Mensajes: 69


Intentamos mejorar cuando mejoramos intentando.


Ver Perfil WWW
Re: [proyecto] Script recopilador de información para asistencia técnica
« Respuesta #8 en: 29 Agosto 2011, 13:13 pm »

Y si sigue dándote problemas entonces... ¿podrías decirme en que distro Linux lo has probado? ¿En tu sistema existe el comando tput?
En el mío no, o eso creo (Ubuntu 11.04). ¿Para qué sirve?
« Última modificación: 29 Agosto 2011, 13:24 pm por P-Joe » En línea

Ten principios y no finales. // http://www.bitgamia.com/
Intel Core Duo Quad Q9550
Gigabyte EG45M-UD2H (G45 motherboard)
WDC Caviar Green SATA 3 Gb/s IntelliPower 500GB
CloudswX


Desconectado Desconectado

Mensajes: 806


"La física es el sistema operativo del Universo"


Ver Perfil
Re: [proyecto] Script recopilador de información para asistencia técnica
« Respuesta #9 en: 29 Agosto 2011, 15:20 pm »

Pues yo lo he probado en mi Ubuntu 10.10 y funciona de pelos, tremendo aporte gente asi contaremos con mas informacion a la hora de postear algun problema.

Saludos por alla.
En línea



 «Dios no juega a los dados, usa /dev/random.»
twitter: @cloudswx
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines