Increment a value in a configuration file.

Experts,
I would appreciate if someone took the time to express there opinion /approach in creating a new change daily to a configuration file. I create a new log file each day and I wish to have a browser based reader display the new file. To achieve this I would need to create a new configuration location.

Here is the file:

$CFG['Sources']['Source1']['ID'] = 'Source1';
$CFG['Sources']['Source1']['Name'] = 'Prod_log1';
$CFG['Sources']['Source1']['SourceType'] = 1;
$CFG['Sources']['Source1']['LogLineType'] = 'syslog';
$CFG['Sources']['Source1']['DiskFile'] = '/var/log/prod/DATE.prod.log'; 

$CFG['Sources']['Source2']['ID'] = 'Source2';
$CFG['Sources']['Source2']['Name'] = 'Prod_log2';
$CFG['Sources']['Source2']['SourceType'] = 1;
$CFG['Sources']['Source2']['LogLineType'] = 'syslog';
$CFG['Sources']['Source2']['DiskFile'] = '/var/log/prod/DATE.prod.log';

So basically I desire to have a new entry below Source2 reflecting Source3 with a new ID and DiskFIle name.

$CFG['Sources']['Source1']['ID'] = 'Source1';
$CFG['Sources']['Source1']['Name'] = 'Prod_log1';
$CFG['Sources']['Source1']['SourceType'] = 1;
$CFG['Sources']['Source1']['LogLineType'] = 'syslog';
$CFG['Sources']['Source1']['DiskFile'] = '/var/log/prod/DATE.prod.log'; 

$CFG['Sources']['Source2']['ID'] = 'Source2';
$CFG['Sources']['Source2']['Name'] = 'Prod_log2';
$CFG['Sources']['Source2']['SourceType'] = 1;
$CFG['Sources']['Source2']['LogLineType'] = 'syslog';
$CFG['Sources']['Source2']['DiskFile'] = '/var/log/prod/DATE.prod.log';

$CFG['Sources']['Source2']['ID'] = 'Source3';
 $CFG['Sources']['Source2']['Name'] = 'Prod_log3';
 $CFG['Sources']['Source2']['SourceType'] = 1;
 $CFG['Sources']['Source2']['LogLineType'] = 'syslog';
 $CFG['Sources']['Source2']['DiskFile'] = '/var/log/prod/DATE.prod.log';



I played around with echo and others. However I am unable to make any progress. Suggestions of all are welcome.

Thanks very much.

I think you want "Source3" in all the "tags" in the last record. Try this script:

#!/usr/bin/perl
open I,"$ARGV[0]";
local $/;
$_=<I>;
$/="\n";
chomp $_;
@x=split /\n\n/,$_;
$x[$#x+1]=$x[$#x];
$x[$#x]=~s/(Source)(\d+)(?{$x=$2;$x++})/$1$x/g;
$x[$#x]=~s/(Prod_log)(\d+)(?{$x=$2;$x++})/$1$x/;
close I;
open I,">$ARGV[0]";
print I join "\n\n",@x;
print I "\n";

Run it like this: ./script.pl file

1 Like

That is so amazing. Thank you so so much. This helps me learn as well.

[root@sysmon prod]# perl perl_script.pl file 

[root@sysmon prod]# cat file 

$CFG['Sources']['Source1']['ID'] = 'Source1';

$CFG['Sources']['Source1']['Name'] = 'Prod_log1';

$CFG['Sources']['Source1']['SourceType'] = 1;

$CFG['Sources']['Source1']['LogLineType'] = 'syslog';

$CFG['Sources']['Source1']['DiskFile'] = '/var/log/prod/DATE.prod.log'; 



$CFG['Sources']['Source2']['ID'] = 'Source2';

$CFG['Sources']['Source2']['Name'] = 'Prod_log2';

$CFG['Sources']['Source2']['SourceType'] = 1;

$CFG['Sources']['Source2']['LogLineType'] = 'syslog';

$CFG['Sources']['Source2']['DiskFile'] = '/var/log/prod/DATE.prod.log';



$CFG['Sources']['Source3']['ID'] = 'Source3';

$CFG['Sources']['Source3']['Name'] = 'Prod_log3';

$CFG['Sources']['Source3']['SourceType'] = 1;

$CFG['Sources']['Source3']['LogLineType'] = 'syslog';

$CFG['Sources']['Source3']['DiskFile'] = '/var/log/prod/DATE.prod.log';



$CFG['Sources']['Source4']['ID'] = 'Source4';

$CFG['Sources']['Source4']['Name'] = 'Prod_log4';

$CFG['Sources']['Source4']['SourceType'] = 1;

$CFG['Sources']['Source4']['LogLineType'] = 'syslog';

$CFG['Sources']['Source4']['DiskFile'] = '/var/log/prod/DATE.prod.log';



$CFG['Sources']['Source5']['ID'] = 'Source5';

$CFG['Sources']['Source5']['Name'] = 'Prod_log5';

$CFG['Sources']['Source5']['SourceType'] = 1;

$CFG['Sources']['Source5']['LogLineType'] = 'syslog';

$CFG['Sources']['Source5']['DiskFile'] = '/var/log/prod/DATE.prod.log';

Jaysunn