Re: Call OnTape from a Perl script?
Posted in 2005
This is by the way my recent sub,,,
sub ontape
{
$pid = 0;
$prompt = "";
#$Error = "";
$Dumpdir = "l:\\\\Backserv\\\\";
$backupfile = "Backup.dmp";
$Scriptdir = "e:\\\\Informix\\\\scripts\\\\";
$cmd_script = "backup.cmd";
#$cmd_script = "ontape -s -L 0";
chdir $Dumpdir;
system( "copy nul $Dumpdir$backupfile" );
chdir $Scriptdir;
system( "e:\\\\Informix\\\\ol_swedlive.cmd" );
local( *Writer, *Reader );
#local( *Writer, *Reader, *Err );
$pid = open2(\\*Reader,\\*Writer, $cmd_script);
#$pid = open3(\\*Writer,\\*Reader,"", $cmd_script);
$prompt =<Reader>;
#$Error =<Err>;
#while ($prompt ne "Please mount tape 1 on L:\\\\Backserv\\\\Backup.dmp
and press Return to continue ... ")
while ($prompt ne "e:\\\\Informix\\\\scripts>ontape -s -L 0")
{
print($prompt, "And here we go One more time,,,\\n");
#print($Error, "eeeeeeeeeeeeeeeeeeeeeee\\n");
$prompt =<Reader>;
#$Error =<Err>;
}
if ($prompt eq "Please mount tape 1 on L:\\\\Backserv\\\\Backup.dmp and
press Return to continue ... ") {
print(<Writer>, "\\n");
}
print($prompt, "Hello world!!!\\n\\n");
#print(<Writer>, "Y\\n");
$prompt="dummy";
close(Writer);
close(Reader);
print $prompt;
}
And backup.cmd
set INFORMIXDIR=E:\\Informix
set INFORMIXSERVER=ol_engine1
set ONCONFIG=ONCONFIG.ol_engine1
set PATH=E:\\Informix\\bin;%PATH%;set DBTEMP=E:\\Informix\\infxtmp
set CLIENT_LOCALE=EN_US.CP1252
set DB_LOCALE=EN_US.8859-1set SERVER_LOCALE=EN_US.CP1252
set DBLANG=EN_US.CP1252
set DBDATE=DMY4/mode con codepage select=1252
ontape -s -L 0