X-Git-Url: http://git.pjr.cc/?a=blobdiff_plain;f=bin%2Fpbdc-bacula.php;h=bb7804fdee326fea458df658fed9617bfe1fe11b;hb=de4013942de5aaedf8e223b46e2a4a82cade751d;hp=5225d4915484155259b7f86e02055b39810da9e7;hpb=8de9d28f6528c9272da5eccb9321a60dc324ce9c;p=php-bacula-disk-changer.git diff --git a/bin/pbdc-bacula.php b/bin/pbdc-bacula.php index 5225d49..bb7804f 100644 --- a/bin/pbdc-bacula.php +++ b/bin/pbdc-bacula.php @@ -54,7 +54,7 @@ function unload_tape() $changer = $argv[1]; $taped = $argv[5]; - unlink("$tapeloc/$changer-drive$taped"); + if(file_exists("$tapeloc/$changer-drive$taped")) unlink("$tapeloc/$changer-drive$taped"); } function load_tape() @@ -74,29 +74,20 @@ function load_tape() $ret = false; $slot = $argv[3]; - $i=1; + + $res = $db->query("select disk_id,tape_name from slots where slot_no=='$slot'"); foreach($res as $row) { - //echo "Listing tapes for disk ".$row["disk_id"].", ".$row["disk_name"]."\n"; - //echo "dir: $amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/\n"; - //exit(0); - $dh = opendir("$amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/"); - while(($file = readdir($dh)) !== false) { - if(ereg("d[0-9]+_vol[0-9]+", $file)!=false) { - if($i == $slot) { - unlink("$tapeloc/$changer-drive$taped"); - symlink("$amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/$file", "$tapeloc/$changer-drive$taped"); - exit(0); - } - $i++; - } else { - //echo "didnt match: $file\n"; - } - //exit(0); - } - closedir($dh); + $did = $row["disk_id"]; + $file = $row["tape_name"]; } - echo "0\n"; + $res = $db->query("select disk_name from disk_list where disk_id=='$did'"); + foreach($res as $row) { + $diskname = $row["disk_name"]; + } + + if(file_exists("$tapeloc/$changer-drive$taped")) unlink("$tapeloc/$changer-drive$taped"); + symlink("$amloc/".$diskname."/pbdc/".$argv[1]."/tapes/$file", "$tapeloc/$changer-drive$taped"); } @@ -123,25 +114,17 @@ function loaded_tape() } $ret = false; - $i=1; + $i=-1; + + $sql = "select slot_no from slots where tape_name=='$rl'"; + $res = $db->query($sql); + foreach($res as $row) { - //echo "Listing tapes for disk ".$row["disk_id"].", ".$row["disk_name"]."\n"; - //echo "dir: $amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/\n"; - //exit(0); - $dh = opendir("$amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/"); - while(($file = readdir($dh)) !== false) { - if(ereg("d[0-9]+_vol[0-9]+", $file)!=false) { - if($rl == $file) { - echo "$i\n"; - exit(0); - } - $i++; - } else { - //echo "didnt match: $file\n"; - } - //exit(0); - } - closedir($dh); + $i = $row[0]; + } + if($i != -1) { + echo "$i\n"; + return; } echo "0\n"; @@ -155,27 +138,28 @@ function list_tapes() $db = db_getDB($argv[1]); - $res = $db->query("select * from disk_list order by disk_id"); + $res = $db->query("select * from slots order by slot_no"); $amloc = conf_getVal($changer, "automountdir"); - $ret = false; - $i=1; foreach($res as $row) { //echo "Listing tapes for disk ".$row["disk_id"].", ".$row["disk_name"]."\n"; //echo "dir: $amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/\n"; //exit(0); - $dh = opendir("$amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/"); - while(($file = readdir($dh)) !== false) { - if(ereg("d[0-9]+_vol[0-9]+", $file)!=false) { - echo "slot $i: $file\n"; - $i++; - } else { - //echo "didnt match: $file\n"; - } - //exit(0); + $tapename = $row["tape_name"]; + $did = $row["disk_id"]; + $sn = $row["slot_no"]; + $res2 = $db->query("select disk_name from disk_list where disk_id=='$did'"); + $dn = ""; + foreach($res2 as $row2) { + $dn = $row2[0]; + } + $tn = "$amloc/".$dn."/pbdc/".$argv[1]."/tapes/$tapename"; + if(file_exists($tn)) { + echo "$sn:$tapename\n"; + } else { + echo "$sn:\n"; } - closedir($dh); } } @@ -188,31 +172,14 @@ function num_slots() $db = db_getDB($argv[1]); - $res = $db->query("select * from disk_list order by disk_id"); - - $amloc = conf_getVal($changer, "automountdir"); + $res = $db->query("select max(slot_no) from slots"); - $ret = false; - $i=1; foreach($res as $row) { - //echo "Listing tapes for disk ".$row["disk_id"].", ".$row["disk_name"]."\n"; - //echo "dir: $amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/\n"; - //exit(0); - $dh = opendir("$amloc/".$row["disk_name"]."/pbdc/".$argv[1]."/tapes/"); - while(($file = readdir($dh)) !== false) { - if(ereg("d[0-9]+_vol[0-9]+", $file)!=false) { - $i++; - } else { - //echo "didnt match: $file\n"; - } - //exit(0); - } - closedir($dh); + $mslot = $row[0]; } - $i--; - - echo "$i\n"; + echo "$mslot\n"; + return; } function listall()