#!/usr/bin/perl# Get ipaddress and netmask from usermy$ipaddr=$ARGV[0];my$nmask=$ARGV[1];my$netmask2=0;my($netmask2)=$nmask=~(/\/(\d{1,2})$/);if($netmask2>0){my$acct=int($netmask2/8);my$ost=$netmask2-($acct*8);my$mask="";for($n=1;$n<=4;$n++){if($n<=$acct){$mask=$mask."".'255';}elsif($n-1==$acct){$mask=$mask."".(256-(2**(8-$ost)));}else{$mask=$mask.""."0";}if($n<=3){$mask=$mask."".".";}}if($maskne""){$nmask=$mask;}}my@addrarr=split(/\./,$ipaddr);my($ipaddress)=unpack("N",pack("C4",@addrarr));my@maskarr=split(/\./,$nmask);my($netmask)=unpack("N",pack("C4",@maskarr));# Calculate network address by logical AND operation of addr & netmask# and convert network address to IP address formatmy$netadd=($ipaddress&$netmask);my@netarr=unpack("C4",pack("N",$netadd));my$netaddress=join(".",@netarr);print"Network mask : $nmask \n";print"Network address : $netaddress \n";# Calculate broadcase address by inverting the netmask# and do a logical or with network addressmy$bcast=($ipaddress&$netmask)+(~$netmask);my@bcastarr=unpack("C4",pack("N",$bcast));my$broadcast=join(".",@bcastarr);print"Broadcast address: $broadcast\n";# END of program
#!/usr/bin/perl
# Get ipaddress and netmask from user
my $ipaddr=$ARGV[0];
my $nmask=$ARGV[1];
my $netmask2 = 0;
my ($netmask2) = $nmask =~ (/\/(\d{1,2})$/);
if($netmask2>0){
my $acct = int($netmask2/8);
my $ost = $netmask2 - ($acct*8);
my $mask = "";
for($n=1;$n< =4;$n++){
if($n<=$acct){
$mask=$mask ."". '255';
}elsif($n-1==$acct){
$mask=$mask ."". (256-(2**(8-$ost)));
}else{
$mask=$mask ."". "0";
}
if($n<=3){
$mask=$mask ."". ".";
}
}
if($mask ne ""){
$nmask = $mask;
}
}
my @addrarr=split(/\./,$ipaddr);
my ( $ipaddress ) = unpack( "N", pack( "C4",@addrarr ) );
my @maskarr=split(/\./,$nmask);
my ( $netmask ) = unpack( "N", pack( "C4",@maskarr ) );
# Calculate network address by logical AND operation of addr & netmask
# and convert network address to IP address format
my $netadd = ( $ipaddress & $netmask );
my @netarr=unpack( "C4", pack( "N",$netadd ) );
my $netaddress=join(".",@netarr);
print "Network mask : $nmask \n";
print "Network address : $netaddress \n";
# Calculate broadcase address by inverting the netmask
# and do a logical or with network address
my $bcast = ( $ipaddress & $netmask ) + ( ~ $netmask );
my @bcastarr=unpack( "C4", pack( "N",$bcast ) ) ;
my $broadcast=join(".",@bcastarr);
print "Broadcast address: $broadcast\n";
# END of program
Добавить комментарий