#!/usr/bin/perl
#################################################################
# This script maps fiber attached tape drives to persistently #
# bind to the same device across reboots. #
# (C) 2011 Benjamin Schmaus #
#################################################################
use strict;
my($junk,$path,$devices,$dev,$file);
my(@devices,@file);
my $date = `date +%m%d%Y`;
$file = `/usr/bin/cp /etc/devlink.tab /etc/devlink.tab.$date`;
@file = `cat /etc/devlink.tab`;
@file = grep !/type=ddi_byte:tape/, @file;
open (FILE,">/etc/devlink.tab.new");
print FILE @file;
close (FILE);
@devices = `ls -l /dev/rmt/*cbn|awk {'print \$9 \$11'}`;
open (FILE,">>/etc/devlink.tab.new");
foreach $devices (@devices) {
chomp($devices);
($dev,$path) = split(/\.\.\/\.\./,$devices);
$dev =~ s/cbn//g;
$dev =~ s/\/dev\/rmt\///g;
$path =~ s/:cbn//g;
($junk,$path) = split(/st\@/,$path);
print FILE "type=ddi_byte:tape;addr=$path;\trmt/$dev\\M0\n";
}
close (FILE);
$file = `/usr/bin/mv /etc/devlink.tab.new /etc/devlink.tab`;
exit;