#!/usr/bin/perl
use strict;
use warnings;
use Expect;
use Fcntl qw(:DEFAULT :flock);
use Getopt::Std;
use POSIX qw(strftime);
use Time::ParseDate;
####
$when = strftime( '%m%d%y', localtime $dt );
####
perl -c script.pl
perl -MO=Lint script.pl
perl -MO=Deparse script.pl
perltidy script.pl
####
#!/usr/bin/perl
use strict;
use warnings;
use Expect;
use Fcntl qw(:DEFAULT :flock);
use Getopt::Std;
use POSIX qw(strftime);
use Time::ParseDate;
my $command = 'connexid';
my $password = 'passwd';
my $login = 'loginid';
my $job = $ARGV[1];
my $queue = $ARGV[2];
my $date = $ARGV[3];
my $time = $ARGV[4];
my $exp;
my $when;
my (%options) = ();
getopts 'hvnlrt', \%options;
if ($date) {
date();
}
if ( $options{'t'} ) {
if ( $job and $queue and $date and $time ) {
print "At $time on $when, this will run $job in queue $queue. \n";
}
elsif ( $job and $queue and $date ) {
print "Please enter a time for the job to run. \n";
}
elsif ( $job and $queue ) {
print
"This will run $job in queue $queue immediately with the -n flag \n";
}
elsif ( $job eq 'install' ) {
print "OK\n";
}
else {
print "Please specify a Job Name and Queue \n";
}
}
if ( $options{'h'} ) {
help();
}
if ( $options{'r'} ) {
if ( $date and $time ) {
repgen();
}
elsif ($date) {
die "Please specify a time for the job to run. \n";
}
else {
die "Please specify a date and time for the job to run. \n";
}
}
if ( $options{'l'} ) {
if ( $date and $time ) {
later();
}
elsif ($date) {
die "Please specify a time for the job to run. \n";
}
else {
die "Please specify a date and time for the job to run. \n";
}
}
if ( $options{'n'} ) {
if ( $job and $queue ) {
now();
}
else {
die "Please specify a job name and a queue. \n";
}
}
if ( $options{'v'} ) {
print "autoepisys version 1.3\n";
}
sub login {
use strict 'refs';
if ( $command eq 'local' ) {
die "Cannot spawn sym $!\n" unless $exp = 'Expect'->spawn('sym');
$exp->expect( 10, '-re', 'UserId' );
$exp->send("$login\r");
$exp->expect( 10, '-re', 'Dedicate this console to this user?' );
$exp->send("y\r");
}
else {
die "Cannot spawn $command $!\n"
unless $exp = 'Expect'->spawn($command);
$exp->expect( 10, '-re', 'password:' );
$exp->send("$password\r");
$exp->expect( 10, '-re', '(#|\\$) ' );
$exp->send("sym\r");
$exp->expect( 10, '-re', 'UserId' );
$exp->send("$login\r");
$exp->expect( 10, '-re', 'Dedicate this console to this user?' );
$exp->send("y\r");
}
}
sub logoff {
use strict 'refs';
if ( $command eq 'local' ) {
$exp->expect( 10, '-re', 'Do you wish to log off the system?' );
$exp->send("y\r");
$exp->soft_close;
}
else {
$exp->expect( 10, '-re', 'Do you wish to log off the system?' );
$exp->send("y\r");
$exp->expect( 10, '-re', '(#|\\$) ' );
$exp->send("exit\r");
$exp->soft_close;
}
}
sub now {
use strict 'refs';
login;
$exp->expect( 10, '-re', 'Menu Selection' );
$exp->send("8\r");
$exp->expect( 10, '-re', 'Menu Selection' );
$exp->send("0\r");
$exp->expect( 10, '-re', 'Selection' );
$exp->send("0\r\r");
$exp->expect( 10, '-re', 'Job File Name' );
$exp->send("$job\r");
$exp->expect( 10, '-re', 'Batch Options?' );
$exp->send("Y\r");
$exp->expect( 10, '-re', 'Display Batch Queues' );
$exp->send("\r");
$exp->expect( 10, '-re', 'Notify Upon Completion?' );
$exp->send("\r");
$exp->expect( 10, '-re', 'Queue Priority' );
$exp->send("\r");
$exp->expect( 10, '-re', 'Scheduled Start Date' );
$exp->send("\r");
$exp->expect( 10, '-re', 'Scheduled Start Time' );
$exp->send("\r");
$exp->expect( 10, '-re', 'Batch Queue' );
$exp->send("$queue\r");
$exp->after( 10, '-re', 'Exception Item Batch ID' );
$exp->send("\r");
$exp->expect( 10, '-re', 'Okay?' );
$exp->send("Y\r");
$exp->expect( 10, '-re', "Batch Job $job Is Done" );
$exp->send("\e");
$exp->send("\e");
$exp->send("\e");
logoff;
}
sub later {
use strict 'refs';
login;
$exp->expect( 10, '-re', 'Menu Selection' );
$exp->send("8\r");
$exp->expect( 10, '-re', 'Menu Selection' );
$exp->send("0\r");
$exp->expect( 10, '-re', 'Selection' );
$exp->send("0\r\r");
$exp->expect( 10, '-re', 'Job File Name' );
$exp->send("$job\r");
$exp->expect( 10, '-re', 'Batch Options?' );
$exp->send("Y\r");
$exp->expect( 10, '-re', 'Display Batch Queues' );
$exp->send("\r");
$exp->expect( 10, '-re', 'Notify Upon Completion?' );
$exp->send("\r");
$exp->expect( 10, '-re', 'Queue Priority' );
$exp->send("\r");
$exp->expect( 10, '-re', 'Scheduled Start Date' );
$exp->send("$when\r");
$exp->expect( 10, '-re', 'Scheduled Start Time' );
$exp->send("$time\r");
$exp->expect( 10, '-re', 'Batch Queue' );
$exp->send("$queue\r");
$exp->expect( 10, '-re', 'Expected System Date' );
$exp->send("$when\r");
$exp->expect( 10, '-re', 'Expected Previous System Date' );
$exp->send("\r");
$exp->after( 10, '-re', 'Exception Item Batch ID' );
$exp->send("$when\r");
$exp->expect( 10, '-re', 'Okay?' );
$exp->send("Y\r");
$exp->send("\e");
$exp->send("\e");
$exp->send("\e");
logoff;
}
sub repgen {
use strict 'refs';
login;
$exp->expect( 10, '-re', 'Menu Selection' );
$exp->send("8\r");
$exp->expect( 10, '-re', 'Menu Selection' );
$exp->send("0\r");
$exp->expect( 10, '-re', 'Selection' );
$exp->send("1\r\r");
$exp->expect( 10, '-re', 'Selection' );
$exp->send("11\r");
$exp->expect( 10, '-re', 'Specification File' );
$exp->send("$job\r");
$exp->expect( 10, '-re', 'Selected Run Date' );
$exp->send("$when\r");
$exp->expect( 10, '-re', 'Specification File' );
$exp->send("\r");
$exp->expect( 10, '-re', 'Batch Options?' );
$exp->send("Y\r");
$exp->expect( 10, '-re', 'Display Batch Queues' );
$exp->send("\r");
$exp->expect( 10, '-re', 'Notify Upon Completion?' );
$exp->send("\r");
$exp->expect( 10, '-re', 'Queue Priority' );
$exp->send("\r");
$exp->expect( 10, '-re', 'Scheduled Start Date' );
$exp->send("\r");
$exp->expect( 10, '-re', 'Scheduled Start Time' );
$exp->send("$time\r");
$exp->expect( 10, '-re', 'Batch Queue' );
$exp->send("$queue\r");
$exp->expect( 10, '-re', 'Okay?' );
$exp->send("Y\r");
$exp->send("\e");
$exp->send("\e");
$exp->send("\e");
logoff();
}
sub help {
use strict 'refs';
print "usage: [-l] [-n] [-r] [-v] [-t] JOB.NAME queue when time\n";
print " The -l option sets the batch job to run later\n";
print " The -n option runs the batch job now (for script automation)\n";
print " The -r option runs a report generator specification file\n";
print " The -v option shows version information\n";
print " The -t option will show you what will happen with a query\n";
print "Examples:\n";
print " auto -l NETTELLER 3 2days 0130\n";
print " auto -l ACH.MIDNIGHT.POST 2 tomorrow 0030\n";
print " auto -n DRAFT.POST 1\n";
print " auto -r DAILY.REFERENCE.FILE 1 today 1801\n";
print " auto -t SOME.COMMAND 2 3days 1801\n";
exit;
}
sub date {
use strict 'refs';
my $dt = parsedate($date);
$when = strftime( '%m%d%y', localtime $dt );
chomp $when;
}