#!/usr/bin/perl # easylun - v0.02 - squarism.com SWITCH: for ($ARGV[0]) { /-h/ && do { displayHelp(); last; }; /-x/ && do { push @flags, '-x'; displayVeritas(@flags); last; }; displayDefault(); } ################################################### # mode subs ################################################### sub displayVeritas { my (@switches) = @_; my $showVeritas; foreach $e (@switches) { if ($e eq "-m") { $showVeritas=true; } } my @rawDisks = raw(); my @luns = lun(@rawDisks); my @vxdisks = vxdisk(@rawDisks); my $i=0; foreach $e (@rawDisks) { printf("Raw:\t$e\n"); printf("LUN:\t$luns[$i]\n"); printf("VXDISK:\t$vxdisks[$i]\n"); printf("\n"); $i++; } } sub displayDefault { my @rawDisks = raw(); my @luns = lun(@rawDisks); my @sds = sd(@rawDisks); my $i=0; foreach $e (@rawDisks) { printf("Raw:\t$e\n"); printf("LUN:\t$luns[$i]\n"); printf("SD:\tssd$sds[$i]\n"); printf("\n"); $i++; } } sub displayHelp { print "Help\n"; exit; } #################################################### # data subs #################################################### sub raw { my (@disks) = `luxadm probe|grep "Logical Path"`; my @devices; foreach $e (@disks) { my ($nothing, $dev) = split(':', $e); chomp($dev); push @devices, $dev; } return @devices; } sub lun { my (@disks) = @_; my @nums; foreach $e (@disks) { my $sysStr="luxadm display $e|grep 'Device Address'"; ($devaddr, $hex) = split(',',`$sysStr`); chomp($hex); push @nums, hex($hex); } return @nums; } sub sd { my (@disks) = @_; my @sds, $path, $num, $i, $j; open(INPUT, "<", "/etc/path_to_inst") or die; foreach $e (@disks) { while() { my $line = $_; if (/ssd/) { ($path, $num) = split(" ", $line); $path =~ s/\"\/scsi_vhci\/ssd\@g//; $path =~ s/\"$//; $path = uc($path); #print $e, "\n", uc($path); if ($e =~ /$path/) { #print $num; push @sds, $num; } } } seek(INPUT,0,0); } close(INPUT); return @sds; } sub vxdisk { my (@disks) = @_; my @vxdisks; foreach $e (@disks) { $e =~ s/\/dev\/rdsk\///; my $sysStr="vxdisk -e list|grep $e"; my ($fabric,$rest) = split('\s+', `$sysStr`); push @vxdisks, $fabric; } return @vxdisks; }