--- smeserver-usbdisksmanager-1.2/root/etc/e-smith/web/functions/usbdisks.old 2015-09-25 14:55:33.000000000 -0400 +++ smeserver-usbdisksmanager-1.2/root/etc/e-smith/web/functions/usbdisks 2017-03-24 17:39:23.000000000 -0400 @@ -38,6 +38,23 @@ sub modifyConfig ($$); sub GeneralMenu ($); sub aide($); +sub USBModifyConfig; +sub validUSBModifyConfig; +sub USBAddDisk; +sub validUSBAddDisk; +sub USBModifyDisk; +sub validUSBModifyDisk; +sub USBMountDisk; +sub USBUnMountDisk; +sub USBMounttoDisk; +sub USBUnMounttoDisk; +sub disable_entry; +sub enable_entry; +sub disable_mediaentry; +sub enable_mediaentry; +sub delete_entry; +sub UUIDgenerate; + @@ -117,7 +134,6 @@ my $tr_save_button = $fm->localise('tr_save_button'); my $tr_rapport = $fm->localise('tr_rapport'); my $tr_with = $fm->localise('tr_with'); -my $tr_removed = $fm->localise('tr_removed'); my $tr_disabled = $fm->localise('tr_disabled'); my $tr_enabled = $fm->localise('tr_enabled'); @@ -338,36 +354,49 @@ ## sub subdevices ($) { - my %mounted=`mount`; + #my %mounted=`mount`; my $mounted=`mount`; - my %fstab= `cat /etc/fstab`; + my @fstab= `cat /etc/fstab`; my @blkid= `/sbin/blkid -c /dev/null `; + my @swap= `cat /proc/swaps|grep '/' |cut -f1`; warn $swap[0]; + my @lvscan = `/sbin/lvscan`; my %disques; my $i = 0; #my %hashes = (clef =>"valeur", clef2 => "valeur2", [%tablo], %table); #verif usb - #udevinfo -a -p /sys/block/sda + #for SME8: udevinfo -a -p /sys/block/sda + #for SME9: udevadm info -a -p /sys/block/sda for (@blkid) { # chemin dev - $disques{$i}{dev}= $_ =~ /^(\/dev\/[a-z\-]{2,3}[0-9]{1}):/ ? $1 : "$tr_unknown"; - my $device = $disques{$i}{dev}; + #$disques{$i}{dev}= $_ =~ /^(\/dev\/[a-z\-]{2,3}[0-9]{1}):/ ? $1 : "$tr_unknown"; + $disques{$i}{dev}= $_ =~ /^(\/dev\/[a-z0-9\-_\/]{2,}):/ ? $1 : "$tr_unknown"; + my $oridevice = $disques{$i}{dev}; + # for lvm /dev/mapper/main-root; change to /dev/main/root + $disques{$i}{dev}= $disques{$i}{dev} =~ /^\/dev\/mapper\/([a-z0-9_]{2,})-([a-z0-9_]{2,})$/ ? "/dev/$1/$2" : $disques{$i}{dev}; + my $device = $disques{$i}{dev}; + my $good = ""; + $good = `/bin/readlink -f $device` if $device ne $oridevice; # nom disque sda (not partition but hard drive) - $disques{$i}{name}= $_ =~ /^\/dev\/([a-z\-]{2,3})[0-9]{1}:/ ? $1 : "$tr_unknown"; + $disques{$i}{name}= $_ =~ /^\/dev\/([a-z\-]{2,})[0-9]*:/ ? $1 : "$tr_unknown"; + #$disques{$i}{name}= $_ =~ /^\/dev\/([a-z0-9\-_\/]{2,}):/ ? $1 : "$tr_unknown"; # UUID $disques{$i}{UUID}= $_ =~ /UUID="([0-9a-zA-Z\-]*)"/ ? $1 : "$tr_unknown"; # label for partition $disques{$i}{LABEL}= $_ =~ /LABEL="([a-zA-Z0-9_\-]*)"/ ? $1 : "$tr_unknown"; # mouted or not - $disques{$i}{mounted}= $mounted =~ /$device on (\/media\/[a-zA-Z0-9_]+) / ? $1 : "no" ; + $disques{$i}{mounted}= $mounted =~ /$device on ([\/\-a-zA-Z0-9_]+) / ? $1 : "no" ; + $disques{$i}{mounted}= $mounted =~ /$oridevice on ([\/\-a-zA-Z0-9_]+) / ? $1 : "no" if $oridevice ne $device; + # the one under does not work with regex , do not know why : map (/$good/ , @swap) ,maybe the / in the device path + $disques{$i}{mounted}= grep($good , @swap) ? 'swap' : "no" if $device =~ /swap/; # is it in fstab - $disques{$i}{fstab}= map ( /$device/, %fstab)? "yes" : "no"; + $disques{$i}{fstab}= map ( /$device/, @fstab)? "yes" : "no"; my $UUID= $disques{$i}{UUID}; my $label= $disques{$i}{LABEL}; if ( ($disques{$i}{fstab} eq "no") && (! $UUID eq "") ) - {$disques{$i}{fstab}= map ( /$UUID/, %fstab)? "yes" : "no";} + {$disques{$i}{fstab}= map ( /$UUID/, @fstab)? "yes" : "no";} if ( ($disques{$i}{fstab} eq "no") && (! $label eq "") ) - {$disques{$i}{fstab}= map ( /$label/, %fstab)? "yes" : "no";} + {$disques{$i}{fstab}= map ( /$label/, @fstab)? "yes" : "no";} # file system type ext2 ext3 swap vfat ... if ( $_ =~ / SEC_TYPE="([a-zA-Z0-9_\-]*)"/ ) {$disques{$i}{FSTYPE}= $_ =~ / SEC_TYPE="([a-zA-Z0-9_\-]*)"/ ? $1 : "$tr_unknown";} @@ -376,9 +405,19 @@ # device type : usb ide sata/scsi $disques{$i}{DEVTYPE}= "$tr_unknown"; my $name = $disques{$i}{name}; - # my $udevinfo = `/usr/bin/udevinfo -a -p /sys/block/$name` ; + # for SME8: my $udevinfo = `/usr/bin/udevinfo -a -p /sys/block/$name` ; + # for SME9: my $udevinfo = `/sbin/udevadm info -a -p /sys/block/$name` ; # small change in udevinfo between rhel 4 and 5 - my $udevinfo = `/usr/bin/udevinfo -p /sys/block/$name -q env|grep "ID_BUS="|sed -e 's/^ID_//g'` ; + $disques{$i}{DEVTYPE}= ""; + #LVM + $disques{$i}{DEVTYPE}= map ( /$device/, @lvscan)? "LVM" : ""; + #RAID + my $infobis=`cat /proc/mdstat |grep -o md[0-9]*`; + $disques{$i}{DEVTYPE}= "RAID" if ($infobis =~ /$name/); + # real device + if ( $disques{$i}{DEVTYPE} eq "" ) { + + my $udevinfo = `/sbin/udevadm info -p /sys/block/$name -q env |grep "ID_BUS="|sed -e 's/^ID_//g'` ; if ($udevinfo =~ /BUS=ide/) { $disques{$i}{DEVTYPE}= "IDE"; @@ -411,8 +450,9 @@ $disques{$i}{DEVTYPE}= $udevinfo; } } + } $i++; - } + } return %disques; } @@ -593,7 +633,7 @@ my $blkid= `/sbin/blkid -t UUID=$pud_UUID`; my $name= $blkid =~ /^\/dev\/([a-z\-]{2,3})[0-9]{1}:/ ? $1 : "$tr_unknown"; my $type; - my $udevinfo = `/usr/bin/udevinfo -a -p /sys/block/$name` ; + my $udevinfo = `/sbin/udevadm info -a -p /sys/block/$name` ; if ($udevinfo =~ /BUS="ide"/) { $type= "IDE"; @@ -704,7 +744,7 @@ my $blkid= `/sbin/blkid -t UUID=$pud_UUID`; my $name= $blkid =~ /^\/dev\/([a-z\-]{2,3})[0-9]{1}:/ ? $1 : "unknown"; my $type; - my $udevinfo = `/usr/bin/udevinfo -a -p /sys/block/$name` ; + my $udevinfo = `/sbin/udevadm info -a -p /sys/block/$name` ; if ($udevinfo =~ /BUS="ide"/) { $type= "IDE"; @@ -794,7 +834,7 @@ #destination my $dest= $mounted =~ /$dev on (\/media\/[a-zA-Z0-9_]+) / ? $1 : "unknown" ; my $mount=`/bin/umount -f $dest`; - my $mounted= `/bin/mount`=~ /$dev on (\/media\/[a-zA-Z0-9_]+)/ ? "$tr_failure" : "$tr_success"; + $mounted= `/bin/mount`=~ /$dev on (\/media\/[a-zA-Z0-9_]+)/ ? "$tr_failure" : "$tr_success"; showInitial ($q, "$tr_rapport umount :
$mounted
$dev : $dest: $mount

"); }