#!/bin/bash
# Informacion de sistema para instalar paquetes y distribuciones
# Software Libre bajo la GPL: http://www.fsf.org/licensing/licenses/gpl.html
# Diego Saravia  dsa@unsa.edu.ar Diego.Saravia@gmail.com
# para Ututo.



TEMP=`getopt -o hv --long help,version -- "$@"`

#if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi

# Note the quotes around `$TEMP': they are essential!
eval set -- "$TEMP"

while true ; do
	case "$1" in
		-h|--help) echo "Help" ; shift ; exit ;;
		-v|--version) echo "Version" ; shift ; exit  ;;
		--) shift ; break ;;
		*) echo "Internal error!" ; exit 1 ;;
	esac
done
#echo "Remaining arguments:"
for arg do echo '--> '"\`$arg'" ; done


NUMPRO=`cat /proc/cpuinfo |grep "model name" |wc -l`


TIPPRO=`cat /proc/cpuinfo |grep "model name" |awk '\
        /Mobile Intel\(R\) Pentium\(R\) 4/ {if (SI!=1) print "pentium4m" ;     SI=1;}\
        /Pentium\(R\) 4/ {if (SI!=1) print "pentium4" ;    SI=1;}\
        /Celeron/        {if (SI!=1) print "celeron";      SI=1;}\
        /Pentium III/    {if (SI!=1) print "pentium3";     SI=1;}\
        /Athlon/         {if (SI!=1) print "athlon";       SI=1;}\
        /Pentium II/     {if (SI!=1) print "pentium2";     SI=1;}\
        /Duron/          {if (SI!=1) print "duron-athlon"; SI=1;}\
        /END/            {if (SI!=1) print "i386";         SI=1;}\
        '`

# (Coppermine)
#Pentium III (Katmai) 
#AMD Athlon(tm) Processor 
#Pentium II (Deschutes) 
#duron-athlon es un duron, historico


#Linux gnu249 2.6.11-HR1 #1 SMP esto es un ututo!


DIST=`cat /proc/version | awk '\
       /SUSE/     {if (SI!=1) print "SuSE";        SI=1;}\
       /RePortE/  {if (SI!=1) print "UtutoR";      SI=1;}\
       /ututo-xs/ {if (SI!=1) print "UtutoEXS";    SI=1;}\
       /sarge/    {if (SI!=1) print "DebianSarge"; SI=1;}\
       /ututo/    {if (SI!=1) print "Ututo";       SI=1;}\
       /ubuntu/   {if (SI!=1) print "Ubuntu";      SI=1;}\
       /ututo/    {if (SI!=1) print "Ututo";       SI=1;}\
       /Debian/   {if (SI!=1) print "Debian";      SI=1;}\
       /Gentoo/   {if (SI!=1) print "Gentoo";      SI=1;}\
       /./        {if (SI!=1) print "GNULinux";    SI=1;}\
       '`

SISTEMA=`uname -s`

DISTO2=`for i in /etc/*[rv]e[lr][es][ai][so][en]
	do 
		if [ -L "$i" ]
		then 
			echo > /dev/null
		else  
			cat "$i"
		fi
	done 2> /dev/null | sed '/LSB/d' | head -n 1`

echo $SISTEMA
echo "======="
echo $DIST2
echo "================"

     MEM=`cat /proc/meminfo |awk '/MemTotal/ {print $2}'`

  KERNEL=`cat /proc/version |awk '{print $3}'`

     GCC=`cat /proc/version |awk '{print $7}'`

  GCCDIA=`cat /proc/version |awk '{print $8}'`

    COMP=`cat /proc/version |awk '{print $4}'`

BOGOMIPS=`cat /proc/cpuinfo |awk ' /bogomips/ {TOT=TOT+$3; } END {print TOT }'`


XPART=`/sbin/fdisk -l 2>>/tmp/infofs | awk '\
       /82  Linux swap/ {ns++;      print                          "export SWAP"ns"="$1";" }\
       /83  Linux/      {n++;       print "export PARTT"n "=Linux;  export PARTD"n"="$1";" }\
       /FAT/            {n++;       print "export PARTT"n "=DOS;    export PARTD"n"="$1";" }\
       /doesn/          {nd++;      print                          "export CDROM"n"="$1";" }\
       END              {           print "export CANTP="n"; export CANTCD="nd"; export CANTSW="ns";" }
      '`
echo $XPART|sed 's/;\s*/\n/g'>/tmp/infosis.lis

. /tmp/infosis.lis

echo $CANTP

#for x:=1 in $CANTP;
#do
#  TAMP$x=`awk ' /$PARTD$x/ {print $1}' `
#done

# falta calcular espacio ocupado de las particiones, cuales son root, y que dice el fstab de ellas enb cadfa uno de los roots, otros tipos, las tipo linux si son reisersf xfa ext 3 2 etc.

# montar y desmontar lo que no este montado para ver tipos y espacios

# probar que funciona con busybox en uclib, con awk estatico sh y fdisk y mount de esos sistemas
 

#echo $NUMPRO:$TIPPRO:$MEM:$BOGOMIPS:$KERNEL:$COMP:$GCC:$GCCDIA:$DIST

echo "export NUMPRO=$NUMPRO"
echo "export TIPPRO=$TIPPRO"
echo "export MEM=$MEM"
echo "export BOGOMIPS=$BOGOMIPS"
echo "export KERNEL=$KERNEL"
echo "export GCC=$GCC"
echo "export DIST=$DIST"
echo $XPART|sed 's/;\s*/\n/g';


#---------------------------
#!/bin/sh
#
# Diego Saravia dsa@unsa.edu.ar
# Marcos Zapata zeta11@hotpop.com 
# 2002
# bajo la GPL,  www.fsf.org
# parte del proyecto ututo www.ututo.org
# se utiliza para alimentar los agentes, luego del arranque, 
# a partir de alli hotplug

# no detecta discos porque eso lo hace ututo en el arranque
# si se usa bajo X puede no detectar o dar problema con el raton de X

# requiere parport, parport_pc, lp 
# requiere sistema usb completo, modulos usbcore ehci, ohci, uhci
# /proc/bus/usb montado
# no reporta hubs usb

# usa /etc/ututo.conf.rat en casos especiales en que no vea raton, 
# en estos casos puede interactuar con el usario via terminal

# en principio, por si, no modifica nada en la pc en que corre,
# no carga modulos, no escribe archivos.
# algunas partes escriben archivos temporales en /tmp, esto hay que eliminarlo

#en DEVICES pongo el mouse primero por el tema del X, cambiar crear X como tarea

 # escribir el conf.rat si es conducente, ver quien lo escribe y como
 # /etc/ututo.conf.rat, o si se usa el pre (ver como)



DATOS=/etc/sde

DEVICES=$NADEVICES

###################### lo

DEVICES="$DEVICES lo"

##################### paralelo

numlp=0
LPS=`ls /proc/sys/dev/parport/parport*/autoprobe`
for i in $LPS; do
   
      #echo export lp${numlp}A=$i
      DEVICES="$DEVICES lp${numlp}"
      echo export lp${numlp}nT=parport
      LP=`ls /proc/sys/dev/parport/parport${numlp}/autoprobe`
      echo export lp${numlp}nAUTOPROBE=$LP
      echo export lp${numlp}nCL=\"`awk -F: '/CLASS/ {print $2}' $LP|sed 's/;//'`\"
      echo export lp${numlp}nMO=\"`awk -F: '/MODEL/ {print $2}' $LP|sed 's/;//'`\"
      echo export lp${numlp}nMA=\"`awk -F: '/MANUFACTURER/ {print $2}' $LP|sed 's/;//'`\"
      echo export lp${numlp}nD=\"`awk -F: '/DESCRIPTION/ {print $2}' $LP|sed 's/;//'`\"
      echo export lp${numlp}nCS=\"`awk -F: '/COMMAND SET/ {print $2}' $LP|sed 's/;//'`\"

      #eval `xmlfoomatic`


      let numlp=$numlp+1
done

###################### PCI
cat /proc/bus/pci/devices | nl -nln -p -w1 | nl -nln -p -w1 >/tmp/dev.dev
MAX=`tail /tmp/dev.dev  -n1 | cut -f1`;

numred=0
numwmod=0
numsnd=0
numvid=0
SNDRED=""
for i in `seq 1 $MAX`; do
  BUSCA=`grep "$i	$i	" /tmp/dev.dev | cut -f4`
  ID=`grep -i $BUSCA $DATOS/pcilist | cut -f1`
  NOMBRE=`grep -i $BUSCA $DATOS/pcilist | cut -f3`
  DESCRIP=`grep -i $BUSCA $DATOS/pcilist | cut -f4`
  FAB=`grep -i $BUSCA $DATOS/pcilist | cut -f2`
#  echo ID $ID  $NOMBRE $DESCRIP
  if [ -n "$NOMBRE" ]; then
    DRIVER=`grep -i $ID $DATOS/vidlist | cut -f2`
    if [ -n "$DRIVER" ]; then

      echo export vid${numvid}nI=$ID
      echo export vid${numvid}nD=$DRIVER
      echo "export vid${numvid}nN=\"${NOMBRE}\""
      DEVICES="$DEVICES vid${numvid}"


  DETVBE=$DATOS/detvbe

  EDID=`$DETVBE --edid`
  VESA=`$DETVBE --vesa`
  DDC=`$DETVBE --horiz`
  MODELO=`$DETVBE --edid-fab`
  MEM=`$DETVBE --memoria`
  FABRIC=`$DETVBE --fabricante`
  VERT=`$DETVBE --vert`

  echo "export vid${numvid}nVESA=$VESA"
  echo "export vid${numvid}nEDID=$EDID"
  echo "export vid${numvid}nHORIZ=$DDC"
  echo "export vid${numvid}nMODELO=\"$MODELO\""
  echo "export vid${numvid}nMEM=$MEM"
  echo "export vid${numvid}nFABRIC=\"$FABRIC\""
  echo "export vid${numvid}nVERT=$VERT"

      let numvid=$numvid+1
    fi
    DRIVER=`grep -i $ID $DATOS/niclist | cut -f2`
    if [ -n "$DRIVER" ]; then

      echo export eth${numred}nI=$ID
      echo export eth${numred}nD=$DRIVER
      echo "export eth${numred}nN=\"${NOMBRE}\""
      DEVICES="eth${numred} $DEVICES"
      let numred=$numred+1

    fi
    DRIVER=`grep -i $ID $DATOS/sndlist | cut -f2`
    if [ -n "$DRIVER" ]; then

      echo export snd${numsnd}nI=$ID
      echo export snd${numsnd}nD=$DRIVER 
      echo "export snd${numsnd}nN=\"${NOMBRE}\"" 
      DEVICES="snd${numsnd} $DEVICES"
      let numsnd=$numsnd+1

    fi
    DRIVER=`grep -i $ID $DATOS/modlist | cut -f2`
    if [ -n "$DRIVER" ]; then

      echo export wmod${numwmod}nI=$ID
      echo export wmod${numwmod}nD=$DRIVER 
      echo "export wmod${numwmod}nN=\"${NOMBRE}\"" 
      DEVICES="wmod${numwmod} $DEVICES"
      let numwmod=$numwmod+1
    fi
 
  fi
done



######################### pnp

pnpdump | grep "Card " | cut -d' ' -f6- | cut -d')' -f1 | nl -nln -p -w1 | \
nl -nln -p -w1 | nl -nln -p -w1 > /tmp/pnp.dev

FOUND=0
MAX=`tail /tmp/pnp.dev | cut -f1`
if [ "$MAX" ]; then
  for i in `seq 1 $MAX`; do
    BUSCA=`grep "$i	$i	$i	" /tmp/pnp.dev | cut -f4`
    VEN1=`echo $BUSCA | cut -d' ' -f8`
    VEN2=`echo $BUSCA | cut -d' ' -f9`
    DEV1=`echo $BUSCA | cut -d' ' -f6`
    DEV2=`echo $BUSCA | cut -d' ' -f7`
    PNP=`grep "$VEN1$VEN2$DEV1$DEV2" $DATOS/pnplist | cut -f2`
    if [ "$PNP" ]; then
      #echo "Placa de sonido ISAPNP: $PNP"
      echo export pnp${numpnp}=$PNP
      let numpnp=$numpnp+1
    fi
  done
fi




###################### USB
nummouse=0
numusb=0
numscan=0
KV=`uname -r` 
for USBDIS in /proc/bus/usb/*/*
do
      # echo $USBDIS
      KKK=`echo $USBDIS|sed 's/\/proc\/bus\/usb\///'`
      KKK1=`echo $KKK|sed 's/[0-9]*\///'`
      KKK2=`echo $KKK|sed 's/\/[0-9]*//'`
      MMM=`lsusb -s $KKK2:$KKK1 2>/dev/null|sed 's/Bus [0-9a-fA-F]* Device [0-9a-fA-F]*: ID [0-9a-fA-F:]* //' `     
      NX=`echo $MMM|grep -vi 'hub'`
      if test "$NX"; then
       USBMOD=`usbmodules --mapfile /etc/modules/${KV}/modules.usbmap   --device  $USBDIS 2>/dev/null` 
       M1=`echo $MMM |grep -i 'mouse'`
       M2=`echo $USBMOD| grep -i 'mouse'`
       MUSB=NO
       if test "$M1";then
          MUSB=SI
       fi
       if test "$M2";then
          MUSB=SI
       fi
       PDEV=SI
       if test $MUSB == SI; then
         PDEV=NO
         echo export mouse${nummouse}=TODAVIANO
         echo export mouse${nummouse}nT=usb           
         echo export mouse${nummouse}nusbD=\"$MMM\"
         echo export mouse${nummouse}nusb=$USBDIS      
         echo export mouse${nummouse}nusbnM=\"$USBMOD\"       
         DEVICES="mouse$nummouse $DEVICES"
         let nummouse=$nummouse+1
       fi
       M1=`echo $MMM |grep -i 'printer'`
       M2=`echo $USBMOD| grep -i 'printer'`
       MLP=NO
       if test "$M1";then
          MLP=SI
       fi
       if test "$M2";then
          MLP=SI
       fi
       if test $MLP == SI; then
         PDEV=NO
         echo export lp${numlp}=TODAVIANO
         echo export lp${numlp}nT=usb           
         echo export lp${numlp}nusbD=\"$MMM\"
         echo export lp${numlp}nusb=$USBDIS      
         echo export lp${numlp}nusbnM=\"$USBMOD\"       
         DEVICES="$DEVICES lp$numlp"
         let numlp=$numlp+1 
       fi
       M1=`echo $MMM |grep -i 'scanner'`
       M2=`echo $USBMOD| grep -i 'scanner'`
       MSCAN=NO
       if test "$M1";then
          MSCAN=SI
       fi
       if test "$M2";then
          MSCAN=SI
       fi
       if test $MSCAN == SI; then
         PDEV=NO
         echo export scanner${numscan}=TODAVIANO
         echo export scanner${numscan}nT=usb   
         echo export scanner${numscan}nusbD=\"$MMM\"
         echo export scanner${numscan}nusb=$USBDIS      
         echo export scanner${numscan}nusbnM=\"$USBMOD\"       
         DEVICES="$DEVICES scanner$numscan"
         let numscan=$numscan+1 
       fi
       if test $PDEV == SI; then
         DEVICES="$DEVICES  usb$numusb"        
         echo export usb${numusb}nD=\"$MMM\"
         echo export usb$numusb=$USBDIS      
         echo export usb${numusb}nM=\"$USBMOD\"
         let numusb=$numusb+1
       fi
      fi
     

done



#if [ -r /proc/bus/usb/devices ]; then
#  cat /proc/bus/usb/devices | nl -nln -p -w1 | nl -nln -p -w1 | nl -nln -p -w1 > /tmp/usb.dev
#  MAX=`tail /tmp/usb.dev -n1 | cut -f1`;
#
#  if [ "$MAX" ]; then
#    for i in `seq 1 $MAX`; do
#      BUSCA=`grep "$i	$i	$i	" /tmp/usb.dev | cut -f4`
#      VEN=`echo $BUSCA | grep "Vendor" | cut -d'=' -f2 | cut -d' ' -f1`
#      ID=`echo $BUSCA | grep "ProdID" | cut -d'=' -f3 | cut -d' ' -f1`
#      MANU=`echo $BUSCA | grep "Manufacturer" | cut -d'=' -f2`
#      PROD=`echo $BUSCA | grep "Product" | cut -d'=' -f2`
#      CLASS=`echo $BUSCA | grep "Driver" | cut -d'(' -f2 | cut -d')' -f1`
#      echo "$VEN - $ID- $MANU - $PROD - $CLASS"
#    done
#   fi
#fi



###################### SERIE



PSAUX=`awk '/psaux/ {print "/dev/psaux"}' /proc/misc`
if test $PSAUX; then
   echo export psaux=$PSAUX
   RES=NO
   RES=`$DATOS/mps2`
   if test "$RES" != "NO"; then
        echo export mouse${nummouse}=/dev/psaux 
        echo export mouse${nummouse}nT=psaux 
        echo export mouse${nummouse}nR=$RES          
        DEVICES="mouse$nummouse $DEVICES"
        let nummouse=$nummouse+1
      else
        LISTAPRORAT="psaux"
        ESPSAUX=SI
   fi
fi


listatty=`cat /proc/tty/driver/serial | awk -F: '! /unknow|serinfo/ {print $1 }'`
nummod=0
numtty=0
for i in $listatty; do
      echo export ttyS${i}nD=/dev/ttyS$i   
      cp /dev/null /dev/cua/$i  2>/dev/null
      if test $? != 0; then
          echo "MSG=\"Dispositivo ttyS$i Ocupado\""
      else
      for j in `seq 1 100`; do 
       chat "" "\c" < /dev/cua/$i > /dev/cua/$i
      done
      chat -t 2 < /dev/cua/$i > /dev/cua/$i "" "+++\d\c" "" "AT" "OK" ""
       if [ "$?" = "0" ]; then
         echo "export ttyS${i}nT=MODEM"
          # | tee /tmp/fffff
          # . /tmp/fffff
         echo "export modem${nummod}=/dev/ttyS$i"
         DEVICES="$DEVICES modem${nummod}"
         let nummod=$nummod+1
        else
         TTY="ttyS${i} $TTY"
       fi
      let numtty=$numtty+1
    fi     
done


for I in $TTY; do
 RES=`$DATOS/mouse /dev/$I`
 if test "$RES" == "3"; then
      echo export mouse${nummouse}nT=serie
      echo export mouse${nummouse}=/dev/$I
      DEVICES="mouse${nummouse} $DEVICES"
      let nummouse=$nummouse+1
   else
      LISTAPRORAT="$LISTAPRORAT $I"
 fi       
done  


################## RATONES


detrat()
{

echo >&2
echo ================ Deteccion de Ratones - Ultimo recurso ================ >&2
echo >&2
echo " Distribuido bajo la GPL por Diego Saravia, dsa@unsa.edu.ar " >&2
echo >&2
pruebo=1

#VIE=NO
#if test $mouse0; then
#  VRATON=/dev/$mouse0
#  echo "     ------------------------------------------------------------"
#  echo "     CONFIGURACION ANTERIOR"
#  echo
#  echo "     RATON=$VRATON "
#  echo 
#  echo "     Borre /etc/ututo.conf.rat para iniciar la detecion de nuevo"
#  echo "     ------------------------------------------------------------"
#
#fi

if test $EPSAUX; then
       RATONDEF=/dev/psaux
    else
       #HABRIA QUE PRObar primero sobre la menor que exista, si no existe
       RATONDEF=/dev/ttyS0
fi 



while test $pruebo;
do
  echo -e "\007" >&2
  echo -e "\007" >&2
  echo >&2
  echo "                         Mueva sus ratones !!!     ">&2
  echo >&2
  sleep 3

#  RATON=$VRATON
  eval `$DATOS/detecta $LISTARAT`


  if test $RATON; then 
        encontro=SI
        pruebo=
   else
    echo " No detecte ningun raton. " >&2
#    if test $VRATON; then
#      RATON=$VRATON
#    else
     echo " Si no esta enchufado, conecte el raton,">&2
     echo " si es PS2 al conectar reinicie la PC " >&2
     echo " Probamos de nuevo?  (ENTER para probar,">&2 
     echo "  cualquier otra cosa para definir a mano y/o salir)" >&2
     read a
     while test $a; 
     do 
       echo "Introduzca el dispositivo por ud mismo, ">&2
       echo "o ingrese ENTER para salir y configurar por defecto como:" >&2 
       echo " $RATONDEF " >&2
       read b
       echo "Raton Configurado a mano. " >&2

       if ! test $b; then
         b=$RATONDEF
       fi
       RATON=$b
       echo 
       echo "        RATON = $b"
       echo 
       echo "Introduzca cualquier cosa si quiere cambiar, "
       echo "ENTER para aceptar"
       read a
       encontro=MANO
       pruebo=        
     done   
#   fi
  fi
done

#if ! test $RATON; then
#   echo "Raton no detectado, configurado por defecto">&2
#   RATON=$RATONDEF
#fi

echo
#echo ===================================================================
echo       CONFIGURACION ACTUAL
echo 
echo "     RATON=$RATON "
echo
echo ===================================================================
echo

}



HMOU=NO
for I in $DEVICES;
do
 case $I in
     mouse*)
      HMOU=SI

     ;;
  esac
done
if test $MOU==SI; then
      DEVICES="$LISTAPRORAT $DEVICES"
fi

if test $HMOU == NO; then
  if test -e /etc/ututo.conf.rat; then
    . /etc/ututo.conf.rat 
    if test $mouse; then
        HMOU=SI 
        #echo "     Raton predetectado en $mouse"
        echo export mouse${nummouse}=$mouse  
        echo export mouse0nR=predetectado 
        mmm=`echo $mouse |sed 's/\/dev\///'`
        for K in $LISTAPRORAT;
        do
              if test $K != $mmm; then
                   KLR="$KLR $K"
              fi
        done
        DEVICES="mouse$nummouse $KLR $DEVICES"
        let nummouse=$nummouse+1       
    fi
  fi
fi

if test $HMOU == NO; then
    if test "$LISTAPRORAT"; then
        LISTARAT=$LISTAPRORAT
        detrat   
        if test $encontro; then
          HMOU=SI 
          echo export mouse${nummouse}=$RATON 
          #echo export mouse${nummouse}nT=  ps o tty??? 
          echo export mouse${nummouse}nR=$encontro 
          mmm=`echo $RATON |sed 's/\/dev\///'`
          for K in $LISTAPRORAT;
          do
              if test $K != $mmm; then
                   KLR="$KLR $K"
              fi
          done
          DEVICES="mouse$nummouse $KLR $DEVICES"
          let nummouse=$nummouse+1
        fi
    fi
fi

if test $HMOU == NO; then
          DEVICES="$LISTAPRORAT $DEVICES"
fi


#   fi




echo export NUMRED=$numred
echo export NUMMSE=$nummouse
echo export NUMVID=$numvid
echo export NUMSND=$numsnd
echo export NUMMOD=$nummod
echo export NUMUSB=$numusb
echo export NUMLP=$numlp
echo export NUMSCAN=$numscan
echo export DEVICES=\"$DEVICES\"










