Você pode usar o seguinte script perl exchange_ips.pl para trocar o ip por três ips constantes (função exchange_const() ) ou por três ips incrementais (função exchange_incr() ). Basta adicionar um comentário ( # ) na frente da chamada de função no final do script que você não precisa.
Observe que um ou mais ips incrementais estarão incorretos se o ip original terminar com 253 ou superior.
O script modifica todas as linhas que começam com $domainname . Se o nome do domínio não for importante ou se os arquivos contiverem apenas linhas para um único domínio, defina my $domainname = ".+"; .
#!/usr/bin/perl
use strict;
use warnings;
my @data = <STDIN>;
my $domainname = "subdomain";
my $const_ip1 = "123.123.123.123";
my $const_ip2 = "124.124.124.124";
my $const_ip3 = "125.125.125.125";
my $pattern = qr/^($domainname\s+A\s+)([\d\.]+)/is;
sub exchange_const($) {
my $dataref = shift;
my $found = 0;
foreach (@$dataref) {
if ($_ =~ m/$pattern/) {
unless ($found) {
$found = 1;
printf "%s%s\n%s%s\n%s%s\n", $1, $const_ip1, $1, $const_ip2, $1, $const_ip3;
}
} else {
print $_;
}
}
}
sub exchange_incr($) {
my $dataref = shift;
my $found = 0;
foreach (@$dataref) {
if ($_ =~ m/$pattern/) {
unless ($found) {
$found = 1;
my $const = $1;
my @iparr = split /\./, $2;
for (1 .. 3) {
$iparr[3]++;
printf "%s%s\n", $const, join ".", @iparr;
}
}
} else {
print $_;
}
}
}
# exchange ip with constant ips
exchange_const(\@data);
# exchange ip with incremental ips
exchange_incr(\@data);
Chame o script assim:
perl exchange_ips.pl < your_file
Repasse todos os arquivos (com backup):
for f in /named_ext/*; do rename s/$/.bak/ $f; perl exchange_ips.pl < $f.bak > $f; done
Exemplo:
Arquivo de amostra para modificação:
# some foo subdomain A 200.201.202.203 # duplicate subdomain A 200.201.202.203 # some bar otherdomain A 99.99.99.99 otherdomain A 1.1.1.1 # another duplicate subdomain A 200.201.202.203
Saída de exchange_const() :
# some foo subdomain A 123.123.123.123 subdomain A 124.124.124.124 subdomain A 125.125.125.125 # duplicate # some bar otherdomain A 99.99.99.99 otherdomain A 1.1.1.1 # another duplicate
Saída de exchange_incr() :
# some foo subdomain A 200.201.202.204 subdomain A 200.201.202.205 subdomain A 200.201.202.206 # duplicate # some bar otherdomain A 99.99.99.99 otherdomain A 1.1.1.1 # another duplicate