home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / rescue / usr / sbin / sgcheck < prev    next >
Text File  |  2006-11-29  |  1KB  |  48 lines

  1. #! /usr/bin/perl
  2. #
  3. # checks the attached SCSI devices and gives you the generic
  4. # SCSI device attached to it
  5. #
  6.  
  7. if ( $ARGV[0] eq "" ) {
  8.   $scsiprocfile = "/proc/scsi/scsi";
  9. }
  10. else {
  11.   $scsiprocfile = $ARGV[0];
  12. }
  13.  
  14. sub cut_trailing_blanks {
  15.   local ($s) = @_;
  16.   local ($x);
  17.   $s =~ /(\s*)$/;
  18.   return substr($s, 0, length($s) - length($1));
  19. }
  20.  
  21. open(FIN, "<$scsiprocfile") || die "Can't open $scsiprocfile";
  22.  
  23. $sgminor = -1;
  24.  
  25. print "\nAssignment of generic SCSI devices,\n";
  26. print "device host/channel/ID/LUN type(numeric type) vendor model:\n\n";
  27.  
  28. LINE: while (<FIN>) {
  29.   if ( /^Attached devices:/ ) {next LINE;}
  30.   if ( /^Host:\s+scsi(\d)\s+Channel:\s+(\d+)\s+Id:\s(\d+)\s+Lun:\s+(\d+)/ ) {
  31.     $sgminor++;
  32.     $host = $1;
  33.     $channel = $2 * 1;
  34.     $id = $3 * 1;
  35.     $lun = $4 * 1;
  36.   }
  37.   if ( /^\s+Vendor:\s+(.+)\s+Model:\s+(.+)\s+Rev:\s+(.+)/ ) {
  38.     $vendor = cut_trailing_blanks($1);
  39.     $model = cut_trailing_blanks($2);
  40.     $rev = cut_trailing_blanks($3);
  41.   }
  42.   if ( /^\s+Type:\s+(.+)\s+ANSI SCSI revision:/ ) {
  43.     $type = cut_trailing_blanks($1);
  44.     print "/dev/sg$sgminor $host/$channel/$id/$lun $type $vendor $model\n";
  45.   }
  46. }
  47. close(FIN)
  48.