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
#!/bin/bash
# Script recopilador de informacion by Festor para la comunidad de elhacker.net
#
# Una forma rapida y sencilla de acceder a los principales comandos y archivos que proporcionan
# informacion sobre el sistema con el fin de que un usuario, sin tener apenas conocimiento del sistema,
# pueda proporcionar mas datos en el caso de que tenga algun problema con su sistema linux.
#
# La idea es que al elegir una opcion el contenido del fichero o la salida del comando se vuelque en un fichero
# de texto plano para simplificar su manejo y posible edicion. De esta forma uno puede copiar y pegar
# la informacion de una manera un poco mas "facil"... :-/
#
# Este script es de libre distribucion, edicion y uso, es decir, podeis hacer lo que os de la gana con el... xD
#
# Gestores de paquetes de software y directorios de ficheros de configuracion de repositorios
yum=/usr/bin/yum
yum_conf=/etc/yum.conf
yum_repos=/etc/yum.repos.d
dpkg=/usr/bin/dpkg
dpkg_sources=/etc/apt/sources.list
dpkg_repos=/etc/apt/sources.list.d
# Gestores de arranque
lilo=/etc/lilo.conf
grub=/boot/grub/menu.lst
# Otros ficheros importantes
xorg=/etc/X11/xorg.conf
fstab=/etc/fstab
# La idea es que su uso fuera intuitivo... pero por si acaso avisamos de como funciona...
function visualizar_ayuda {
tput cup 5 4; echo -e " En la pantalla principal elige la opcion deseada pulsando la tecla"
tput cup 6 4; echo -e "que corresponde a la letra resaltada, acto seguido aparecera un menu"
tput cup 7 4; echo -e "desplegable en el que debes seleccionar la accion a realizar en base"
tput cup 8 4; echo -e "al numero resaltado de su izquierda. Espero que te sea de utilidad!!"
tput cup 10 4; echo -e "by Festor... ^_^"
tput cup 11 4; echo -e "para la comunidad de elhacker.net"
}
# Meto el menu en una funcion porque lo vamos a llamar repetidas veces
function menu {
clear
tput cup 0 4; echo -e "---------------------------------------------------------"
tput cup 1 4; echo -e "..:: Bienvenido al script recopilador de informacion ::.."
tput cup 2 4; echo -e "---------------------------------------------------------"
tput cup 3 1; echo -e "Info del sistema"
tput cup 3 1; echo -e "\033[1;32mI\033[0m"
tput cup 3 20; echo -e "Redes"
tput cup 3 20; echo -e "\033[1;32mR\033[0m"
tput cup 3 28; echo -e "Hardware"
tput cup 3 28; echo -e "\033[1;32mH\033[0m"
tput cup 3 39; echo -e "Programas"
tput cup 3 39; echo -e "\033[1;32mP\033[0m"
tput cup 3 51; echo -e "Ayuda"
tput cup 3 51; echo -e "\033[1;32mA\033[0m"
tput cup 3 59; echo -e "Salir"
tput cup 3 59; echo -e "\033[1;32mS\033[0m"
}
# Dado que no queremos ensuciar el directorio actual con decenas de ficheros nos pasamos a /tmp
cd /tmp
# Llamamos al menu
menu
# Esto sirve para que la ayuda se muestre en la primera ejecucion del script.
# En sucesivas ejecuciones no deberia aparecer mas la ayuda al menos que se borre el
# fichero "ayuda_leida" de /tmp (lo cual ocurre cuando reinicias la computadora).
if ! [[ -e ayuda_leida ]]; then visualizar_ayuda && echo "Ya deberias saber como funciona el script" > ayuda_leida ; fi
# El funcionamiento es sencillo, despues de cada "case" se llama de nuevo al menu
# para crear una ilusion de un menu desplegable.
# No hay que olvidarse de que uno puede estar usando letras minusculas o mayusculas (= Bloq Mayus activado)
while [[ "$opcion" != 's' ]] && [[ "$opcion" != 'S' ]]; do
read -s -n1 opcion
case $opcion in
I|i)
menu
tput cup 4 1; echo -e "(1) Distribucion Linux"
tput cup 4 2; echo -e "\033[1;32m1\033[0m"
tput cup 5 1; echo -e "(2) Lista de particiones"
tput cup 5 2; echo -e "\033[1;32m2\033[0m"
tput cup 6 1; echo -e "(3) Gestor de arranque"
tput cup 6 2; echo -e "\033[1;32m3\033[0m"
tput cup 7 1; echo -e "(4) Usuarios logueados"
tput cup 7 2; echo -e "\033[1;32m4\033[0m"
tput cup 8 1; echo -e "(5) Registro del nucleo (dmesg)"
tput cup 8 2; echo -e "\033[1;32m5\033[0m"
read -s -n1 subopcion
case $subopcion in
1|2|3|4|5) case $subopcion in
# Nombre y version de la distribucion que usas mas la version del kernel Linux que tienes instalado.
1)cat /etc/issue > LinuxDistro.txt && uname -r >> LinuxDistro.txt && xdg-open LinuxDistro.txt;;
# 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.
2)cat $fstab > fstab.txt && xdg-open fstab.txt;;
# Dado que no hay un gestor de arranque universal comprobamos cual es el que esta instalado.
3)if [[ -e "$grub" ]] ; then cat $grub > MenuGrub.txt && xdg-open MenuGrub.txt ; fi ;
if [[ -e "$lilo" ]] ; then cat $lilo > MenuLilo.txt && xdg-open MenuLilo.txt ; fi
;;
4)who > UsersLogged.txt && xdg-open UsersLogged.txt;;
5)dmesg > KernelLog.txt && xdg-open KernelLog.txt;;
esac;
menu;;
*)menu;;
esac;;
R|r)
menu
tput cup 4 20; echo -e "(1) ifconfig"
tput cup 4 21; echo -e "\033[1;32m1\033[0m"
tput cup 5 20; echo -e "(2) Wifi & Wireless"
tput cup 5 21; echo -e "\033[1;32m2\033[0m"
read -s -n1 subopcion
case $subopcion in
1|2) case $subopcion in
1)ifconfig > ifconfig.txt && xdg-open ifconfig.txt;;
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;;
esac;
menu;;
*)menu;;
esac;;
H|h)
menu
tput cup 4 28; echo -e "(1) Perifericos internos (lspci)"
tput cup 4 29; echo -e "\033[1;32m1\033[0m"
tput cup 5 28; echo -e "(2) Perifericos externos (lsusb)"
tput cup 5 29; echo -e "\033[1;32m2\033[0m"
tput cup 6 28; echo -e "(3) Servidor grafico (Xorg)"
tput cup 6 29; echo -e "\033[1;32m3\033[0m"
tput cup 7 28; echo -e "(4) Aceleracion grafica 3D"
tput cup 7 29; echo -e "\033[1;32m4\033[0m"
if [[ -e /usr/bin/lshw ]]; then
tput cup 8 28; echo -e "(5) Informacion mas detallada"
tput cup 8 29; echo -e "\033[1;32m5\033[0m"
fi
read -s -n1 subopcion
case $subopcion in
1|2|3|4|5) case $subopcion in
1)lspci -k > HardwarePCI.txt && xdg-open HardwarePCI.txt;;
2)lsusb > HardwareUSB.txt && xdg-open HardwareUSB.txt;;
3)if [[ -e "$xorg" ]] ; then cat $xorg > Xorg.txt && xdg-open Xorg.txt ; fi;;
4)glxinfo | grep direct > DirectRendering.txt && xdg-open DirectRendering.txt;;
5)lshw -short -sanitize > GeneralInfo.txt && xdg-open GeneralInfo.txt;;
esac;
menu;;
*)menu;;
esac;;
P|p)
menu
tput cup 4 39; echo -e "(1) Repositorios en uso"
tput cup 4 40; echo -e "\033[1;32m1\033[0m"
tput cup 5 39; echo -e "(2) Paquetes de software instalados"
tput cup 5 40; echo -e "\033[1;32m2\033[0m"
read -s -n1 subopcion
case $subopcion in
# La idea es simple: primero comprobamos si hay algun gestor instalado que este soportado
# y luego averiguamos cual comprobandolos uno a uno.
1|2) if [[ -e "$dpkg" || -e "$yum" ]] ; then
case $subopcion in
1)if [[ -e "$dpkg_sources" ]] ; then cat $dpkg_sources $dpkg_repos/*.list > AptSources.txt && xdg-open AptSources.txt ; fi ;
if [[ -e "$yum_conf" ]] ; then cat $yum_conf $yum_repos/*.repo > YumSources.txt && xdg-open YumSources.txt ; fi ;;
2)if [[ -e "$dpkg" ]] ; then dpkg -l > DebPkgList.txt && xdg-open DebPkgList.txt ; fi ;
if [[ -e "$yum" ]] ; then yum list installed > RpmPkgList.txt && xdg-open RpmPkgList.txt ; fi ;;
esac;
else
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
fi
menu;;
*)menu;;
esac;;
A|a)
menu
visualizar_ayuda
read -s -n1 subopcion
case $subopcion in
*)menu;;
esac;;
# Cualquiera opcion no valida implica volver al menu.
*)
menu;;
esac
done
# Aunque estemos trabajando en /tmp es recomendable borrar los (posibles) ficheros creados ya que si
# volvemos a ejecutar el script sin reiniciar el sistema es posible que causen "problemas".
rm -f LinuxDistro.txt LinuxKernel.txt fstab.txt MenuGrub.txt MenuLilo.txt UsersLogged.txt KernelLog.txt \
ifconfig.txt iwconfig.txt HardwarePCI.txt HardwareUSB.txt Xorg.txt DirectRendering.txt GeneralInfo.txt \
AptSources.txt YumSources.txt ErrorProgramas.txt DebPkgList.txt RpmPkgList.txt
clear
exit


 
  




 Autor
 Autor
		



 En línea
									En línea
								










