| |||||||||
![]() |
|
|
«
Previous Thread
|
Next Thread
»
|
Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
|
|
SlickEdit: Code in over 40 languages across 7 platforms. SlickEdit’s unmatched power, speed, and flexibility allows even the most accomplished developers to write better code faster. Download a free trial today! |
|
#1
|
||||
|
||||
|
Disk list
#! /usr/local/bin/perl
# This script is public domain # Comments or suggestions to djl@dplace.com if ( $< != 0 ) { die "You must be root to run this\n"; } system("/etc/init.d/volmgt stop"); open(MNT, "mount |"); while(<MNT>) { ($mnt, $on, $dev) = split; $dev =~ s/.*\///; $mount{$dev} = $mnt; } close(MNT); if ( -t stdout ) { # No formatting if output is a terminal $lpp = 0; } else { # Format for printing at 66 lines per page $lpp = 66; } $lines = 0; chdir("/dev/rdsk"); print localtime() . "\n\n"; $lines += 2; print "**********\n**********\n**\n** DISKS\n**\n"; print "**********\n**********\n\n"; $lines += 8; @CD = (); @disks = <c?t*d?p0>; foreach $disk (sort disksort @disks) { # Remember controller device $ctlr = `ls -l $disk`; chomp($ctlr); if ( $ctlr =~ /devices/ ) { $ctlr =~ s/.*devices\///; $ctlr =~ s/(.*)\/.*/$1/; ($ctlrs{$ctlr} = $disk) -~ s/t.*//; } $type = 'Disk'; @lines = (); open(SINFO, "/usr/local/bin/scsiinfo -r $disk 2>&1 |" ); while(<SINFO>) { if ( /Device Type/ ) { if ( /CD-ROM/ ) { $type = 'CD-ROM'; push(@CD, $disk); last; } } push(@lines, $_); } next if $type eq 'CD-ROM'; if ( $lpp != 0 and $lines % $lpp > $lpp-19 ) { while($lines % $lpp != 1) { print "\n"; ++$lines; } } print "Device: $disk\n\n"; $lines += 2; print @lines; $lines += @lines; if ( $lpp != 0 and $lines % $lpp > $lpp-19 ) { while($lines % $lpp != 1) { print "\n"; ++$lines; } } open(FDISK, "fdisk -W - $disk 2>&1 |" ); $_ = scalar(<FDISK>); $_ = scalar(<FDISK>); if ( $lpp != 0 and $lines % $lpp != 1 ) { print "\n"; ++$lines; } print "$_"; ++$lines; $dump = 1; while(<FDISK>) { if ( $dump and ! / systid:/ ) { next; } $dump = 0; if ( / systid:/ ) { # Read the system code translation table while(<FDISK>) { last if /^\*$/; chomp; ($dummy, $code, $type) = split /[ :]+/; $type =~ s/FDISK_//; $SysCode{$code} = sprintf "%7s", $type; } $_ = scalar <FDISK>; $_ = scalar <FDISK>; } s/\*/ /; ($type) = split ' '; if ( defined($SysCode{$type}) ) { s/....../$SysCode{$type}/; } else { print " "; } print $_; ++$lines; } close(FDISK); open(FMT, "format $disk <<! 2>/dev/null | sed -e '1,/^partition>/d' -e '/^partition>/,\$d' p p q q ! |"); $disk =~ s/p0//; while(<FMT>) { chomp; ($part) = split; if ( $part eq "Part" ) { print "$_ Mount\n"; } else { print "$_ $mount{$disk . 's' . $part}\n"; } ++$lines; } close(FMT); print "\n\n\n"; $lines += 3; } if ( $lpp != 0 and $lines % $lpp > $lpp-17 ) { while($lines % $lpp != 1) { print "\n"; ++$lines; } } print "**********\n**********\n**\n** CDROM/DVDROM\n**\n"; print "**********\n**********\n\n"; $lines += 8; foreach $disk (@CD) { if ( $lpp != 0 and $lines % $lpp > $lpp-9 ) { while($lines % $lpp != 1) { print "\n"; ++$lines; } } print "Device: $disk\n\n"; $lines += 2; open(SINFO, "/usr/local/bin/scsiinfo -r $disk 2>&1 |" ); while(<SINFO>) { print $_; ++$lines; } close(SINFO); print "\n\n\n"; $lines += 3; } chdir("/dev"); while($lpp != 0 and $lines % $lpp != 1) { print "\n"; ++$lines; } if ( $lpp != 0 and $lines % $lpp > $lpp-17 ) { while($lines % $lpp != 1) { print "\n"; ++$lines; } } print "**********\n**********\n**\n** TAPES\n**\n"; print "**********\n**********\n\n"; $lines += 8; foreach $tape (<rmt/?>) { if ( $lpp != 0 and $lines % $lpp > $lpp-12 ) { while($lines % $lpp != 1) { print "\n"; ++$lines; } } print "Device: $tape\n\n"; $lines += 2; $dev = `ls -l $tape`; chomp( $dev ); if ( $dev =~ /devices/ ) { ($ctlr = $dev) =~ s/.*devices\///; $ctlr =~ s/(.*)\/.*/$1/; $ctlr = $ctlrs{$ctlr}; if ( $ctlr eq "" ) { print "No match for SCSI controller device $dev\n"; } else { $ctlr =~ s/t.*//; ($target = $dev) =~ s/.*@(.*),(.*):.*/t$1d$2/; print "Scsi ID: $ctlr$target\n"; ++$lines; } } open(SINFO, "/usr/local/bin/scsiinfo -r $tape 2>&1 |" ); while(<SINFO>) { print $_; ++$lines; } close(SINFO); print "\n\n\n"; $lines += 3; } if ( -d "/dev/scsi/scanner" ) { chdir("/dev/scsi/scanner"); if ( $lpp != 0 and $lines % $lpp > $lpp-17 ) { while($lines % $lpp != 1) { print "\n"; ++$lines; } } print "**********\n**********\n**\n** SCANNERS\n**\n"; print "**********\n**********\n\n"; $lines += 8; foreach $scanner (<*>) { if ( $lpp != 0 and $lines % $lpp > $lpp-9 ) { while($lines % $lpp != 1) { print "\n"; ++$lines; } } print "Device: $scanner\n\n"; $lines += 2; open(SINFO, "/usr/local/bin/scsiinfo -r $scanner 2>&1 |" ); while(<SINFO>) { print $_; ++$lines; } print "\n\n\n"; $lines += 3; close(SINFO); } } system("/etc/init.d/volmgt start >/dev/null"); sub disksort { ($ctrl_a = $a) =~ s/c(.*)t.*/$1/; ($ctrl_b = $b) =~ s/c(.*)t.*/$1/; if( $ctrl_a != $ctrl_b ) { return $ctrl_a <=> $ctrl_b; } ($tgt_a = $a) =~ s/.*t(.*)d.*/$1/; ($tgt_b = $b) =~ s/.*t(.*)d.*/$1/; if( $tgt_a != $tgt_b ) { return $tgt_a <=> $tgt_b; } ($lun_a = $a) =~ s/.*t(.*)d.*/$1/; ($lun_b = $b) =~ s/.*t(.*)d.*/$1/; if( $lun_a != $lun_b ) { return $lun_a <=> $lun_b; } return $a <=> $b; } |
![]() |
| Viewing: ASP Free Forums > Programming > Code Bank > Disk list |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|
|
|
|
|
|