P
P
pfsenses2016-05-10 03:02:07
Perl
pfsenses, 2016-05-10 03:02:07

How to substitute a value in a template depending on the presence of a certain file?

There is a batch file that parses logs, and if everything is in order, it creates the ok.txt file. If not, then it doesn't create anything. There is a perl script:

#!/usr/bin/perl
#use strict;
use warnings;
use MIME::Lite::TT::HTML; 
use MIME::Base64;
use HTML::Template;
use File::stat;
use Time::localtime;
use Encode qw/encode decode/;

my %params;
my $Date = localtime;
 
 $params{INCLUDE_PATH} = 'C:/scripts/bin/Template';
 $params{created} = 'ok.png';
 $params{uncreated}  = 'fail.png';

 $params{verified} = 'ok.png';
 $params{unverified}  = 'fail.png';

 my %options;
 $options{INCLUDE_PATH} = 'C:/scripts/bin/Template';

my $msg = MIME::Lite::TT::HTML->new(
                           From    => '[email protected]',
                           To      => '[email protected]',
                           Subject => 'Backup-report for' .$Date ,
                           Type    => 'multipart/mixed',
                           HTMLEncoding =>  'base64',
                                    Template    =>  {
                                   html    => 'backup.html',
                                    },
          Charset     => 'utf8',
          TmplOptions => \%options,
          TmplParams  => \%params,
);
$msg->send('smtp','mail.example.com', Timeout => 60 );

There is also a template that suits me:
spoiler
<p>Report of backup system:</p>
<p>Backup Accounting Bases 1C:</p>

<table border="1" cellpadding="0" cellspacing="0">
  <tbody>
    <tr>
      <td style="width:170px;">
        <p>Base Name</p>
      </td>
      <td style="width:204px;">
        <p>Backup Available</p>
      </td>
      <td style="width:215px;">
        <p>Verificated Backup</p>
      </td>
    </tr>
    <tr>
      <td style="width:170px;">
        <p>1C-1</p>
      </td>
      <td style="width:204px;">&nbsp;</td>
      <td style="width:215px;">&nbsp;</td>
    </tr>
    <tr>
      <td style="width:170px;">1C-2</td>
      <td style="width:204px;">
        <p>&nbsp;</p>
      </td>
      <td style="width:215px;">
        <p>&nbsp;</p>
      </td>
    </tr>
    <tr>
      <td style="width:170px;">1C-3</td>
      <td style="width:204px;">
        <p>&nbsp;</p>
      </td>
      <td style="width:215px;">
        <p>&nbsp;</p>
      </td>
    </tr>
    <tr>
      <td style="width:170px;">1C-4</td>
      <td style="width:204px;">
        <p>&nbsp;</p>
      </td>
      <td style="width:215px;">
        <p>&nbsp;</p>
      </td>
    </tr>
    <tr>
      <td style="width:170px;">1C-5</td>
      <td style="width:204px;">
        <p>&nbsp;</p>
      </td>
      <td style="width:215px;">
        <p>&nbsp;</p>
      </td>
    </tr>
    <tr>
      <td style="width:170px;">1C-6</td>
      <td style="width:204px;">
        <p>&nbsp;</p>
      </td>
      <td style="width:215px;">
        <p>&nbsp;</p>
      </td>
    </tr>
    <tr>
      <td style="width:170px;">1C-7</td>
      <td style="width:204px;">
        <p>&nbsp;</p>
      </td>
      <td style="width:215px;">
        <p>&nbsp;</p>
      </td>
    </tr>
    <tr>
      <td style="width:170px;">1C-8</td>
      <td style="width:204px;">
        <p>&nbsp;</p>
      </td>
      <td style="width:215px;">
        <p>&nbsp;</p>
      </td>
    </tr>
    <tr>
      <td style="width:170px;">1C-9</td>
      <td style="width:204px;">
        <p>&nbsp;</p>
      </td>
      <td style="width:215px;">
        <p>&nbsp;</p>
      </td>
    </tr>
    <tr>
      <td style="width:170px;">1C-10</td>
      <td style="width:204px;">
        <p>&nbsp;</p>
      </td>
      <td style="width:215px;">
        <p>&nbsp;</p>
      </td>
    </tr>
  </tbody>
</table>
<p>Backup Access Control System:</p>

<table border="1" cellpadding="0" cellspacing="0">
  <tbody>
    <tr>
      <td style="width:170px;">Data Type</td>
      <td style="width:203px;">
        <p>Backup Available</p>
      </td>
      <td style="width:215px;">
        <p>Verificated Backup</p>
      </td>
    </tr>
    <tr>
      <td style="width:170px;">
        <p>Software Directory</p>
      </td>
      <td style="width:203px;">
        <p>&nbsp;</p>
      </td>
      <td style="width:215px;">
        <p>&nbsp;</p>
      </td>
    </tr>
    <tr>
      <td style="width:170px;">
        <p>Database</p>
      </td>
      <td style="width:203px;">
        <p>&nbsp;</p>
      </td>
      <td style="width:215px;">
        <p>&nbsp;</p>
      </td>
    </tr>
  </tbody>
</table>

<p>Backup configuration files of Cisco Devices:</p>

<table border="1" cellpadding="0" cellspacing="0" style="width:586px;" width="586">
  <tbody>
    <tr>
      <td style="width:170px;">
        <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Device Name</p>
      </td>
      <td style="width:208px;">
        <p>Backup Available</p>
      </td>
      <td style="width:208px;">
        <p>Verificated Backup</p>
      </td>
    </tr>
    <tr>
      <td style="width:170px;">
        <p>Router Cisco 2911</p>
      </td>
      <td style="width:208px;">
        <p>&nbsp;</p>
      </td>
      <td style="width:208px;">
        <p>&nbsp;</p>
      </td>
    </tr>
    <tr>
      <td style="width:170px;">
        <p>Switch Cisco 2960-1.1</p>
      </td>
      <td style="width:208px;">
        <p>&nbsp;</p>
      </td>
      <td style="width:208px;">
        <p>&nbsp;</p>
      </td>
    </tr>
    <tr>
      <td style="width:170px;">
        <p>Switch Cisco 2960-1.3</p>
      </td>
      <td style="width:208px;">
        <p>&nbsp;</p>
      </td>
      <td style="width:208px;">
        <p>&nbsp;</p>
      </td>
    </tr>
    <tr>
      <td style="width:170px;">
        <p>Switch Cisco 2960-1.4</p>
      </td>
      <td style="width:208px;">
        <p>&nbsp;</p>
      </td>
      <td style="width:208px;">
        <p>&nbsp;</p>
      </td>
    </tr>
    <tr>
      <td style="width:170px;">
        <p>Switch Cisco 2960-2.1</p>
      </td>
      <td style="width:208px;">
        <p>&nbsp;</p>
      </td>
      <td style="width:208px;">
        <p>&nbsp;</p>
      </td>
    </tr>
    <tr>
      <td style="width:170px;">
        <p>Switch Cisco 2960-3.1</p>
      </td>
      <td style="width:208px;">
        <p>&nbsp;</p>
      </td>
      <td style="width:208px;">
        <p>&nbsp;</p>
      </td>
    </tr>
    <tr>
      <td style="width:170px;">
        <p>Switch Cisco 2960-4.1</p>
      </td>
      <td style="width:208px;">
        <p>&nbsp;</p>
      </td>
      <td style="width:208px;">
        <p>&nbsp;</p>
      </td>
    </tr>
    <tr>
      <td style="width:170px;">
        <p>Wireless Controller
        Cisco WLC 2504</p>
      </td>
      <td style="width:208px;">
        <p>&nbsp;</p>
      </td>
      <td style="width:208px;">
        <p>&nbsp;</p>
      </td>
    </tr>
  </tbody>
</table>
<p>Backup File Database:</p>

<table border="1" cellpadding="0" cellspacing="0">
  <tbody>
    <tr>
      <td style="width:159px;">
        <p align="center">Data Type</p>
      </td>
      <td style="width:215px;">
        <p>Backup Available</p>
      </td>
      <td style="width:215px;">
        <p>Verificated Backup</p>
      </td></p>
      </td>
    </tr>
    <tr>
      <td style="width:159px;">
        <p>Database</p>
      </td>
      <td style="width:215px;">&nbsp;</td>
      <td style="width:215px;">&nbsp;</td>
    </tr>
  </tbody>
</table>
<p>Backup User Data from File Server:</p>
<p>Verification of user data directory backup is difficult, because backup software have no verification functional. Report about last incremental backup you can see <a href="file:///\\appserv.example\Logs\Fileserver.log">here</a>.</p>

<p>Backup data from mail server:</p>

<table border="1" cellpadding="0" cellspacing="0">
  <tbody>
    <tr>
      <td style="width:159px;">
        <p>Data Type</p>
      </td>
      <td style="width:215px;">
        <p>Backup Available</p>
      </td>
      <td style="width:215px;">
        <p>Verificated Backup</p>
      </td>
    </tr>
    <tr>
      <td style="width:159px;">
        <p>Mail2DB Scripts</p>
      </td>
      <td style="width:215px;">
        <p>&nbsp;</p>
      </td>
      <td style="width:215px;">
        <p>&nbsp;</p>
      </td>
    </tr>
  </tbody>
</table>

<p>Verification of Mail Server directory backup is difficult, because backup software have no verification functional. Report about last incremental backup you can see <a href="file:///\\appserv.example\Logs\Mail.log">here</a>.</p>


Actually the question is: how to organize automatic substitution of the corresponding value in the template, depending on the presence of this file?

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question