#!/bin/bash
# /bin/pcinfo.sh
#
# Versión 0.32
#
# 032: quitada recolección de info sobre errores de video y lista de
# procesos (contiene información "privada personal")
#
#mar jun 17 14:50:00 CEST 2008
#
# Modificado para que funcione en sistemas no musix
#
# TODO: quitar info irrelevante, sumar otra info de hardware que sea importante
#
#
# Se agregó información de Video para Musix 0.40
#
# Recolectar información sobre datos importantes de una PC
# para resolver problemas de hardware/software, configuración, etc.
# que tengan que ver con el sonido, sobre todo...
#
# (C) 2005-2007 Marcos Guglielmetti y Adrian Pardini, 
# licencia GNU GPL v2 o posterior
# basado en partes de Adrian Pardini
# Musix GNU+Linux

# Agregué soporte para i18n
# Ahora uso xtest para una deteccion mas fiable de X
# Pardo. 24-08-2005


L=`echo $LANG | cut -b1-2`

clear

# Linea original:
export USAR_NLS="si"
# Linea original:
#export TEXTDOMAIN="pcinfo"
#export TEXTDOMAINDIR=/etc/musix/locales

#Contenido de config/encabezado :

# Musix
#. /etc/musix/funciones-i18n
#[ -e /etc/musix/funciones ] && . /etc/musix/funciones

#Fin de config/encabezado
#Fin de las modificaciones.

#puede ser -nearmouse o -center (o nada)
#pos="-nearmouse"
pos="-center"

probar_X && x=1

if [ -z $USER ]; then export USER=root; fi
if [ -z $HOME ]; then export HOME=/root; fi

#echo Estamos en español


if [ "$USER" = "root" ] 
then
echo "root user: ok"

else

if [ "$L" = "es" ]
then
gmessage "Deberías correr este script como usuario
administrador (root), de lo contrario no podremos
recolectar ciertos datos."
else
gmessage "You should run this script as root user"
fi
fi




if [ $x ]; then

_n "Voy a buscar información importante en tu PC.
Puede ser útil para resolver problemas.
Crearé un archivo de texto con los datos recolectados en:
/tmp/pcinfo.txt
Puedes enviar ese archivo a algún experto
para que analice el sistema.
Puedo tardar unos segundos...
¿Continuar?" | gmessage -wrap -title 'PCinfo' -file - $pos -buttons $(_n "Si:0,No:2" ) -default $(_n "Si" ) -geometry 350x250
if [ $? -gt 0 ]; then exit 2; fi

else

_ "Voy a buscar información importante en tu PC.
Puede ser útil para resolver problemas.
Crearé un archivo de texto con los datos recolectados en:
/tmp/pcinfo.txt
Puedes enviar ese archivo a algún experto
para que analice el sistema.
Puedo tardar unos segundos...
¿Continuar?"

_ "(S/N)"

	while (true)
	do
		read -n1 resp
		case $resp in
		[$( _n "sS" )])
			echo -e "\n"
			break
			;;
		[$( _n "nN" )])
			_ "\nOk. \n"
			exit 2
			;;
		*)
			_ "\nSs o Nn."
		;;
	esac
	done

fi


[ -e "/tmp/pcinfo.txt" ] && rm -f /tmp/pcinfo.txt

if [ $x ]; then
	_n "Trabajando..." | gmessage -file - $pos &
	l_PID=$!
	export l_PID
else
	_n "Trabajando..."
fi


# Creación del archivo de datos
cat /dev/null >/tmp/pcinfo.txt
#
sleep 1s
echo "_________________________________________" > /tmp/pcinfo.txt
echo "Musix Version:" >>/tmp/pcinfo.txt
cat /etc/musix-version >> /tmp/pcinfo.txt
echo "_________________________________________" >>/tmp/pcinfo.txt
echo "INTERRUPTS" >>/tmp/pcinfo.txt
cat /proc/interrupts >> /tmp/pcinfo.txt
echo "_________________________________________" >>/tmp/pcinfo.txt
echo "CPUINFO" >>/tmp/pcinfo.txt
cat /proc/cpuinfo >>/tmp/pcinfo.txt
echo "_________________________________________" >>/tmp/pcinfo.txt
echo "snd-page-alloc" >>/tmp/pcinfo.txt
cat /proc/driver/snd-page-alloc >>/tmp/pcinfo.txt
echo "_________________________________________" >>/tmp/pcinfo.txt
echo "free RAM" >>/tmp/pcinfo.txt
echo "_________________________________________" >>/tmp/pcinfo.txt
free   >>/tmp/pcinfo.txt


echo "_________________________________________" >>/tmp/pcinfo.txt
echo "lspci" >>/tmp/pcinfo.txt
echo "_________________________________________" >>/tmp/pcinfo.txt
lspci  >>/tmp/pcinfo.txt

echo "_________________________________________" >>/tmp/pcinfo.txt
echo "lspci -nv /// ID del fabricante y de las placas" >>/tmp/pcinfo.txt
echo "_________________________________________" >>/tmp/pcinfo.txt
lspci -nv   >>/tmp/pcinfo.txt




# modificando la forma de hace echo, musix "0.32" en adelante
echo "
_________________________________________

          Placas de sonido reconocidas
          por el sistema
_________________________________________

" >>/tmp/pcinfo.txt
echo "cat /proc/asound/cards" >>/tmp/pcinfo.txt


cat /proc/asound/cards >>/tmp/pcinfo.txt
echo "cat /proc/isapnp >>/tmp/pcinfo.txt" >>/tmp/pcinfo.txt
cat /proc/isapnp >>/tmp/pcinfo.txt

if ! echo "$0" | grep hwsetup; then
echo "_________________________________________" >>/tmp/pcinfo.txt
echo "HWSETUP" >>/tmp/pcinfo.txt


hwsetup -v >>/tmp/pcinfo.txt
fi

echo "_________________________________________" >>/tmp/pcinfo.txt
echo "ESPACIO_USADO_LIBRE" >>/tmp/pcinfo.txt
df -h >> /tmp/pcinfo.txt

echo "_________________________________________" >>/tmp/pcinfo.txt
echo "Modulos ALSA cargados" >>/tmp/pcinfo.txt
lsmod | grep snd >>/tmp/pcinfo.txt


echo "_________________________________________" >>/tmp/pcinfo.txt
echo "cat /etc/security/limits.conf" >>/tmp/pcinfo.txt
cat /etc/security/limits.conf >>/tmp/pcinfo.txt


echo "_________________________________________" >>/tmp/pcinfo.txt
echo "cat /etc/security/limits.conf" >>/tmp/pcinfo.txt
cat /etc/security/limits.conf >>/tmp/pcinfo.txt

echo "_________________________________________" >>/tmp/pcinfo.txt
echo "ls -la /etc/rc5.d/  " >>/tmp/pcinfo.txt
ls -la /etc/rc5.d/ >> /tmp/pcinfo.txt

echo "_________________________________________" >>/tmp/pcinfo.txt
echo "ls -la /etc/rcS.d/  " >>/tmp/pcinfo.txt
ls -la /etc/rcS.d/ >> /tmp/pcinfo.txt

echo "_________________________________________" >>/tmp/pcinfo.txt
echo "Modulos OSS cargados" >>/tmp/pcinfo.txt
lsmod | grep sound >>/tmp/pcinfo.txt
echo "_________________________________________" >>/tmp/pcinfo.txt

# Nuevo para Musix 0.40
echo "________________VIDEO______________________" >>/tmp/pcinfo.txt
echo "________________Xorg________________________" >>/tmp/pcinfo.txt
cat /etc/X11/xorg.conf >>/tmp/pcinfo.txt
echo "_________________________________________" >>/tmp/pcinfo.txt
#
#echo "______________errores de video________________" >>/tmp/pcinfo.txt
#cat /root/.xsession-errors >>/tmp/pcinfo.txt
echo "_________________________________________" >>/tmp/pcinfo.txt
echo "______________fstab________________" >>/tmp/pcinfo.txt
cat /etc/fstab >> /tmp/pcinfo.txt
echo "_________________________________________" >>/tmp/pcinfo.txt
echo "______________lsmod________________" >>/tmp/pcinfo.txt
lsmod >> /tmp/pcinfo.txt
#echo "_______________   ps -A _____________________" >>/tmp/pcinfo.txt
#ps -A >> /tmp/pcinfo.txt
echo "_________________________________________" >>/tmp/pcinfo.txt
echo "_________________GRUB____________________" >>/tmp/pcinfo.txt
cat /boot/grub/menu.lst >> /tmp/pcinfo.txt
echo "_________________________________________" >>/tmp/pcinfo.txt

#
uname -a >>/tmp/pcinfo.txt

echo "___________opciones de inicio del kernel:________________" >>/tmp/pcinfo.txt
cat /proc/cmdline >>/tmp/pcinfo.txt


if ps | grep "$l_PID" | grep -v grep; then
	kill "$l_PID"
	unset l_PID
fi

if [ $x ] 
then

# Abriendo kedit porque es más sencillo cuando quieres guardar el archivo en otro lado
kedit /tmp/pcinfo.txt &
# abriendo leafpad sólo porque se ve mejor ahí
#leafpad /tmp/pcinfo.txt
sleep 5s
# abriendolo en el explorador, para que pueda copiarlo
rox-filer /tmp
else
clear
echo "Terminado...
Generamos el archivo /tmp/pcinfo.txt
Ahora puedes enviar el archivo /tmp/pcinfo.txt a un experto para que analice el problema...
Únete a la lista de correo en: http://www.musix.org.ar

¿Quieres montar todos los discos duros y otros dispositivos de almacenamiento para poder copiar el archivo a otro lado?
(S/n) [enter]
"
read SN

if [ "$SN" = "s" ]
then
# Montamos todo lo que encontramos...
for   mpoint in $(ls /mnt); do

	if ! mount | grep "/mnt/$mpoint" 2>&1 >/dev/null ; then

		_Sn 'Montando /mnt/$mpoint...'
		mount  3>/dev/null 2>/dev/null 1>/dev/null "/mnt/$mpoint"
		if [ $? -gt 0 ]; then _ "no se pudo montar..."; else _ "OK"; fi
	else
		_S '/mnt/$mpoint ya esta montado.'
	fi
done

# Copiamos?

echo "
Ahora puedes copiar el archivo /tmp/pcinfo.txt a otro dispositivo, por ejemplo:

cp /tmp/pcinfo.txt /mnt/hda1

Con ese comando lo copiaríamos al directorio raíz del primer disco IDE en nuestro equipo.
"

else
echo "Suerte..."
ls /tmp/pcinfo.txt

fi


fi