#!/usr/bin/perl -w use strict; my $Version= "2.0"; use strict; use Getopt::Std; use vars qw(%opts); use Data::Dumper; $| = 10; # no buffering getopts('j:s:q:v', \%opts); print STDERR "\n$0 version $Version\n\n" and exit 0 if $Version and $opts{v}; my $date=`date +%Y%m%d:%H`; chomp $date; #print Dumper(\%opts); if(!defined $opts{s}) { &usage; } if(!defined $opts{j}) { $opts{j}="%"; } my $reg_ex_auto=$opts{j}; my $attr=$opts{s}; my $orig_attr=$attr; $opts{q}=1 if(exists $opts{q}); #print Dumper(\%opts); $attr=~ s/\./\\./g; $attr=~ s/\*/\.\*/g; $attr=~ s/\%/\.\*/g; my $header_str; my $tailer_str="# ==T--H--E--#--E--N--D=="; print STDERR "$0 Version $Version\n\n"; print "\nAutosys Job/Regular Expression : $reg_ex_auto\n"; print "Attribute to Search from jils : $orig_attr\n"; if($opts{'q'}) { print "Autosys JILs used for Search : YES\n\n"; $header_str="# $date JOB: $reg_ex_auto JIL: YES\n"; } else { print "Autosys JILs used for Search : NO\n\n"; $header_str="# $date JOB: $reg_ex_auto JIL: NO\n"; } my $auto_inp; my $auto_input_file="$ENV{'HOME'}/AUTOINPUT"; my $latest_input=0; my ($first_line,$last_line); if(-f $auto_input_file) { unless(-r $auto_input_file) { print "$auto_input_file is Not Accessible.\n\n"; exit(1); } =head open (CHECK,$auto_input_file)|| die "Can't Open for Check Header :$auto_input_file :$!\n"; my $c=1; while() { my $line=$_; if($c==1) { if($line eq $header_str) { $latest_input=1; } else { $latest_input=0; } } last; $c++; } close CHECK; } =cut $first_line=`head -1 $auto_input_file`; $last_line=`tail -1 $auto_input_file`; if($first_line eq $header_str && $last_line eq $tailer_str) { $latest_input=1; } } if(!$latest_input) { print STDERR "Searching in Autosys, Please Wait..."; if($opts{'q'}) { $auto_inp=`autorep -J $reg_ex_auto -q`; } else { $auto_inp=`autorep -J $reg_ex_auto -w`; } open (WW,">$auto_input_file")|| die "Can't Open for Write :$auto_input_file :$!\n"; print WW $header_str; print WW $auto_inp; print WW $tailer_str; print STDERR "\rGetting Autosys JIL(s) for \"$reg_ex_auto\" Completed...\n\n"; close WW; } else { print STDERR "Serching in $auto_input_file : $first_line\n\n"; } ##################################################################### my ($nul,$val)=split(/\s+/,`wc -l $auto_input_file`); ##print "==$val==\n"; if($val==0) { print STDERR "\nNo Search Result Found for : $reg_ex_auto\n"; #&usage; exit(0); } $/=undef; open(RR,$auto_input_file) || die "Can't Open for Read :$auto_input_file:$!\n"; my $res_j=; my ($line1,$res)=split(/\n/,$res_j,2); #print "----$line1---\n"; close RR; my @jobs; if(defined $opts{q}) { @jobs=split(/insert_job/, $res); } else { @jobs=split(/\n/, $res); } #print STDERR "Generating Search Results using JILs for \"$attr\"...\n"; my $found=0; foreach my $job (@jobs) { my @eachjobs=split(/\n/,$job); my $count=0; my $job_name; my $results; if(defined $opts{q}) { my $fst_line=shift(@eachjobs); $fst_line="insert_job".$fst_line; unshift(@eachjobs,$fst_line); } my $jr; my $jr_flg=0; foreach my $eachline (@eachjobs) { next if($eachline=~ /\/\*/); next if($eachline=~ /$tailer_str/); #print "==$eachline==\n"; if($count==0) { if($eachline=~/insert_job:\s+(.+)\s+job_type/) { $job_name=&trim($1); } } if(!defined $opts{q}) { if($eachline=~/^(.+?)\s+(\d\d\/\d\d\/\d{4}|---)/g) { $job_name=&trim($1); } } #print "--$job_name++\n"; #$jr=`autorep -J $job_name -w`; if($eachline=~/$attr/i) { $jr=&trim(`autorep -J $job_name -w | head -5 | tail -1`); $eachline=&trim($eachline); if($opts{'q'} && $jr_flg==0) { $jr=~ s/\s{5,}/ /g; $results .="$jr\n"; $jr_flg=1; } $eachline=~ s/\s{5,}/ /g; $results .="\t$eachline\n"; } $count++; } if(defined $results && $results ne "") { $found++; if($opts{'q'}) { #$results="--$found\. $job_name\n$results\n"; $results="$found\. $results\n"; } else { $results="$found\. $job_name\n$results\n"; } print $results; } } print STDERR "Generating Search Results using JIL(s) for \"$orig_attr\" Completed.\n"; print STDERR "$found Search Result(s) Found...\n\n"; ###################### SUBROUTINE : trim ()########################## #removes prefix and postfixed space/newline/tab from input string sub trim { my ($str)=@_; return undef unless(defined $str); $str=~s/^\s+|\s+$//g; return $str; } sub usage { print STDERR qq( USAGE: aws -j %Autosys_Job% OR Job_Name -s "key word" -q -j Regular Expresion of Autosys jobs (Ex: c_arcs%) OR job name (Optional) -s Attribute (key word) to search from Autosys [Jobs/JIL(s)].(Mendatory) -q Search the key word from JIL(s) for specified job(s). (Optional) -v version ); exit(0); }