home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 February / PCWorld_2000-02_cd.bin / live / sbin / detect < prev    next >
Text File  |  1999-11-12  |  8KB  |  304 lines

  1. #!/bin/sh
  2. ####################################
  3. #Name : detect 
  4. #
  5. #Description: To detect all the hardware on your system
  6. #Copyright (C) 1999 Corel Corporation 
  7. # EXHIBIT A -Corel Public License. 
  8. # The contents of this file are subject to the Corel Public License 
  9. # Version 1.0 (the "License"); you may not use this file except in 
  10. # compliance  with the License. You may obtain a copy of the License at 
  11. # linux.corel.com/linuxproducts/corellinux/license.htm. 
  12. # Software distributed under the License is distributed on an "AS IS" 
  13. # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the 
  14. # License for the specific language governing rights and limitations 
  15. # under the License. 
  16. # The Original Code is detect. 
  17. # The Initial Developer of the Original Code is Corel Corporation. 
  18. # Portions created by Corel are Copyright (C) 1999  All Rights Reserved. 
  19. # Contributor(s): ______________________________________. 
  20. ##############################################################
  21.  
  22. IDEDIRNAME=/proc/ide
  23. SCSIDIRNAME=/proc/scsi
  24.  
  25. ##
  26. #TO DISPLAY THE INFORMATION FOR THE CD-ROM
  27. ##
  28. Cdrom_Header()
  29. {
  30.   echo "[cdrom.$j]"
  31.   echo "       " "device = $Cd_Device"
  32.   echo "       " "driver = $Cd_Driver"
  33.   echo "       " "model  = $Cd_Model"
  34.   echo " "
  35. }
  36.  
  37. ##
  38. #TO DISPLAY THE INFORMATION FOR THE HARD-DISK 
  39. ##
  40. Disk_Header()
  41. {
  42.   echo "[disk.$k]"
  43.   echo "       " "device = $D_Device"
  44.   echo "       " "driver = $D_Driver"
  45.   echo "       " "model  = $D_Model"
  46.   echo " "
  47. }
  48.  
  49. ##
  50. #TO DISPLAY THE INFORMATION FOR SOUND CARD
  51. ##
  52. Sound_Header()
  53. {
  54.   echo "[sound.1]"
  55.   echo "       " "driver = $S_Driver"
  56.   echo " "
  57. }
  58.  
  59. ##
  60. #TO DISPLAY THE INFORMATION OF THE KEYBOARD
  61. ##
  62. Keyboard_Header()
  63. {
  64.   echo "[keyboard.1]"
  65.   echo "       " "driver = us"
  66.   echo " "
  67. }
  68.  
  69. ##
  70. #TO DISPLAY THE INFORMATION FOR THE NETWORK
  71. ##
  72. Network_Header()
  73. {
  74.   echo "[network.1]"
  75.   echo -n "     " device = $N_Driver
  76.   echo " "
  77. }
  78.  
  79. ##
  80. #TO OUTPUT THE INFORMATION OF DEVICES TO /ETC/DEVICES
  81. ##
  82. Output_Devices()
  83. {
  84.   rm -f /etc/devices.new
  85.   rm -f /dev/mouse
  86.   cprobe >> /etc/devices.new
  87.   Detect_Cdrom >> /etc/devices.new
  88.   Detect_Hd >> /etc/devices.new
  89.   Keyboard_Header >> /etc/devices.new
  90.   pestcontrol >> /etc/devices.new
  91.   monprobe >> /etc/devices.new
  92. #  clear
  93. }
  94.  
  95.  
  96. ############################################################
  97. #
  98. # Method: Detect_Hd()
  99. #
  100. # Author: Katerina Tsarouchas        August 26 1999
  101. #
  102. # Purpose: To detect what kind of hard-drive you have
  103. #          and where it is located.
  104. #
  105. # Copyright 1999 Corel Corporation. 
  106. #
  107. ############################################################
  108.  
  109. Detect_Hd()
  110. {
  111.   for x in $IDEDIRNAME/hd[abcd]
  112.   do
  113.    grep -li 'disk' $IDEDIRNAME/hd?/media > /tmp/found_hd 2>/dev/null
  114.   done
  115.  
  116.    let k=0
  117.  
  118.    #check to see if the user has an ide hard-drive 
  119.    if [ -s /tmp/found_hd ]
  120.    then
  121.      #get where the drive is located
  122.      sed -e  's/\/proc\/ide\///' -e 's/\/media//' < /tmp/found_hd > /tmp/hd_variable
  123.      Hd_Drive=`cat /tmp/hd_variable`
  124.  
  125.      #loop through each drive and get all the info for it 
  126.      for j in $Hd_Drive
  127.      do
  128.        
  129.        #get the name of the model
  130.        head -1 $IDEDIRNAME/$j/model > /tmp/model_file.$j
  131.  
  132.        #get the name of the driver
  133.        cut -d' ' -f1 $IDEDIRNAME/$j/driver > /tmp/driver_file.$j
  134.  
  135.        #get the values for device, model and driver
  136.        D_Device=/dev/$j
  137.        D_Model=`cat /tmp/model_file.$j`
  138.        D_Driver=`cat /tmp/driver_file.$j`
  139.  
  140.         if $( dd if=$D_Device of=/dev/null bs=512 count=1 )
  141.         then
  142.            #get the next drive
  143.            let k=$k+1
  144.            Disk_Header
  145.          fi    
  146.        rm -rf /tmp/model_file.* /tmp/driver_file.*
  147.      done
  148.      rm -rf /tmp/found_hd /tmp/hd_file /tmp/hd_variable 
  149.    fi
  150.   
  151.   #check to see if the user has a scsi hard-drive
  152.   if [ -d  $SCSIDIRNAME ]
  153.   then
  154.      ls $SCSIDIRNAME > /tmp/var_driver 
  155.      head -1 /tmp/var_driver > /tmp/driver_out
  156.      D_Driver=`cat /tmp/driver_out`
  157.      grep -C Direct-Access $SCSIDIRNAME/scsi > /tmp/access_file
  158.      grep -1 Direct-Access /tmp/access_file > /tmp/temp_file
  159.      grep -h "Model" /tmp/temp_file > /tmp/file_model
  160.      sed -e 's/^.*Model: //' -e 's/Rev.*//' < /tmp/file_model > /tmp/temp_model
  161.    
  162.     #determine what the device is for scsi
  163.     for m in /dev/sd?
  164.     do
  165.       if $(head -c1b $m > /dev/null)
  166.       then
  167.          set BOOTDEV=$m
  168.          let k=$k+1
  169.          head -n $k /tmp/temp_model | tail -n 1 > /tmp/Hd_Model.$k
  170.          D_Model=`cat /tmp/Hd_Model.$k`
  171.          D_Device=$m
  172.          Disk_Header
  173.       fi
  174.     done
  175.     rm -rf /tmp/access_file /tmp/temp_file /tmp/driver_out 
  176.     rm -rf /tmp/temp_model /tmp/file_model /tmp/var_driver /tmp/Hd_Model.*
  177.    fi
  178. }
  179.  
  180. ############################################################
  181. #
  182. # Method: Detect_Cdrom()
  183. #
  184. # Author: Katerina Tsarouchas        August 26, 1999
  185. #
  186. # Description: Check to see if the user has a cdrom and
  187. #           if it is a scsi or an ide.
  188. #
  189. # Copyright 1999 Corel Corporation.  
  190. #
  191. ############################################################
  192.  
  193. Detect_Cdrom()
  194. {
  195.   #Search to see if the user CD-ROM is an IDE or a SCSI
  196.   grep -li 'cd*rom'  $IDEDIRNAME/hd?/media > /tmp/found_cdrom 2>/dev/null
  197.  
  198.   let j=0
  199.   let g=0
  200.  
  201.   if [ -s /tmp/found_cdrom ]
  202.   then
  203.      sed -e 's/\/media//' < /tmp/found_cdrom > /tmp/ide_cdrom
  204.      var2=`cat /tmp/ide_cdrom`
  205.      sed -e 's/\/proc\/ide\///' < /tmp/ide_cdrom > /tmp/ide_var
  206.      ide_var=`cat /tmp/ide_var`
  207.      rm -f /tmp/found_cdrom
  208.     for s in $ide_var
  209.     do
  210.       cut -d' ' -f1 /$IDEDIRNAME/$s/driver > /tmp/temp_driver.$s
  211.       Cd_Driver=`cat /tmp/temp_driver.$s`
  212.       head -1 /$IDEDIRNAME/$s/model > /tmp/model_temp.$s
  213.       Cd_Model=`cat /tmp/model_temp.$s`
  214.       Cd_Device=/dev/$s
  215.       let j=$j+1
  216.       Cdrom_Header
  217.     done
  218.   fi
  219.   rm -f /tmp/temp_driver /tmp/model_temp /tmp/ide_var /tmp/ide_cdrom 
  220.  
  221.   if [ -d $SCSIDIRNAME ] 
  222.   then
  223.      ls $SCSIDIRNAME  > /tmp/temp_driver
  224.      head -1 /tmp/temp_driver > /tmp/scsi_var
  225.      Cd_Driver=`cat /tmp/scsi_var`
  226.      grep -C CD-ROM $SCSIDIRNAME/scsi > /tmp/scsi_out
  227.      grep -1 CD-ROM /tmp/scsi_out > /tmp/out_file
  228.      grep -w "Model" /tmp/out_file > /tmp/MODEL_file
  229.      sed -e 's/^.*Model: //' -e 's/Rev.*//' < /tmp/MODEL_file > /tmp/MODEL_name
  230.      sed -e 's/Vendor.* //' < /tmp/MODEL_file > /tmp/foo
  231.      foofoo=`cat /tmp/foo`
  232.      for r in $foofoo
  233.      do
  234.        let j=j+1
  235.        head -n $j /tmp/MODEL_name | tail -n 1 > /tmp/Cd_Model.$j
  236.        Cd_Model=`cat /tmp/Cd_Model.$j`
  237.        Cd_Device=/dev/scd$g
  238.        Cdrom_Header
  239.        let g=g+1
  240.      done
  241.    fi
  242.   rm -f /tmp/temp_driver /tmp/scsi* /tmp/out_file /tmp/MODEL* /tmp/foo
  243. }
  244.  
  245. ##
  246. # PURPOSE: TO DETECT PROPRIETARY CD-ROM DRIVES
  247. ##
  248. #bpcd cm206 mcd sbpcd cdrom gscd mcdx sjcd"
  249.  
  250. #modprobe  $CD-ROM_List
  251.  
  252. #for x in $CD-ROM_List
  253. #   do
  254. #      lsmod | grep &x && echo Found $x
  255. #   done
  256.  
  257.  
  258. ###########################
  259. #
  260. # THE MAIN FUNCTION
  261. #
  262. ###########################
  263.  
  264. if [ $# = 0 ]
  265. then
  266.   echo " "
  267.   echo "USAGE: detect [boot] or [probe] or [list]"
  268.   echo "boot:  to load the modules"
  269.   echo "probe: to list your hardware of your system and write it to /etc/devices"
  270.   echo "list:  to list your hardware of your system and write it to standard output"
  271.   echo " "
  272.   exit 1 
  273. else
  274.   case "$1" in
  275.     boot)
  276.       echo " "
  277.       lsmod
  278.       ;;
  279.     probe)
  280.       echo " " 
  281.       Output_Devices
  282.       if [ -e /etc/devices ]
  283.       then
  284.           cp /etc/devices /etc/devices.bak
  285.           etcdevdiff
  286.       else
  287.           cp /etc/devices.new /etc/devices
  288.       fi 
  289.       ;;
  290.     list)
  291.       echo " "
  292.       if [ -e /etc/devices ]
  293.       then
  294.         cat /etc/devices
  295.       else
  296.         Output_Devices
  297.         cat /etc/devices.new
  298.       fi 
  299.    esac
  300. fi
  301.