Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env perl
- use strict;
- if ($#ARGV < 0) {
- print "usage: $0 add|del [route_list]\n";
- exit 1;
- }
- my $flag = $ARGV[0];
- use Cwd 'abs_path';
- use File::Basename 'dirname';
- my $list_file = dirname(abs_path($0)) . "/routes_cn.txt";
- $list_file = $ARGV[1] if $#ARGV >= 1;
- my %device;
- foreach ( `route -n` ) {
- chomp;
- my ($dest, $gateway, $mask, $flag, $metric, $ref, $use_num, $interface) = split /\s+/;
- if ($dest eq '0.0.0.0' and !($interface =~ m/(tun|tap)\d/)) {
- $device{$interface} = $gateway;
- # print "$interface\t$gateway\n";
- }
- }
- open FILE, "<", $list_file
- or die "File $list_file: $!\n";
- while (<FILE>) {
- chomp;
- next if m/\W*#/;
- my ($net, $msk) = split /\//;
- # print "$net\t$msk\n";
- foreach my $interface ( keys %device ) {
- my $gateway = $device{$interface};
- if ($flag eq "add") {
- system("route add -net $net netmask $msk gw $gateway dev $interface");
- } elsif ($flag eq "del") {
- system("route del -net $net netmask $msk");
- }
- }
- }
- close FILE;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement