- 论坛徽章:
- 0
|
原帖由 cheveu 于 2009-9-16 00:38 发表
方法一:0、1组合。
0、copy run tftp,同样可以达到保存当前配置的目的。
1、用windows下的脚本可以实现你同样的功能,而且密码是可以预先写在文档里让脚本按顺序读取的。不过需要搭配1使用。
方法二:2、 ...
你这么多回帖就这个有价值撒。
这个应该能配合楼主的输出用,改改还能统计别的比如bpduguard,udld之类的
#!/bin/awk -f
#
#Int[1]=switch_name Int[2]=interface_number Int[3]=Admin_Status Int[4]=IP
#
#Int[7]=Vlan Int[8]=Voice_Vlan
#
#Int[10]=Description
#
#Int[100]=access/trunk/routed Int[101]=accss_vlan Int[102]=trunk_native_vlan
#
#Int[103]=voice_vlan
#
BEGIN { FS="\n"; RS="!"; OFS="\t"; ORS="\n";
if(sub("^-","",ARGV[1])){ __COMMAND=ARGV[1]; ARGV[1]=""; ARGIND++ } else __EXIT_SCR="TRUE";
__COUNT_VLAN="c";
__VERBOSE="v";
__PORT_USAGE="u";
__REVERSE_PORT_USAGE="U";
__HELP_FLAG="h"; __HELP_FULL_FLAG="help";
Int[1]="switch_name"; Int[2]="interface_number"; Int[3]"=Admin_Status"; Int[4]="IP";
Int[7]="Vlan"; Int[8]="Voice_Vlan";
Int[10]="Description";
Int[100]="access/trunk/routed"; Int[101]="accss_vlan"; Int[102]="trunk_native_vlan";
Int[103]="voice_vlan";
TOTAL_PORTS=0; CLOSED_PORTS=0;
#########################################
# Initial Output by category #
#########################################
if(__COMMAND~__COUNT_VLAN){
print "Counting ports in VLAN...";
if(__COMMAND~__VERBOSE) {
printf ("%-16s\t%-8s\t%-4s\t%-4s\t%s\n", "Switch","Int","Admin","Vlan","Voice","Destination"); }
}
else if(__COMMAND~__PORT_USAGE){
print "Counting ports usage..."
if(__COMMAND~__VERBOSE) {
printf ("%-16s\t%-8s\t%4s\t%10s\t%10s\n", "Switch","Int","Admin","Shutdowned","Toatal Ports"); }
}
else if(__COMMAND~__HELP_FLAG || __COMMAND~__HELP_FULL_FLAG){
__EXIT_SCR="TRUE";
__PRINT_HELP_MESSAGE()
exit 0
}
else if(__EXIT_SCR~"TRUE"){
__PRINT_HELP_MESSAGE()
exit 0
};
}
$2~/^interface/{
#########################################
# Filt interface config #
#########################################
for(foo in Int){ Int[foo]="N/A"}
Int[1]=FILENAME; sub(".*/","",Int[1]); sub(".txt","",Int[1]);
bar = 1; while ( bar <= NF ) {
if( sub("^interface ","",$bar)){
sub("gabitEthernet\|stEthernet\|rt-channel\|back","",$bar); Int[2]=$bar;
if(Int[2]~"Vlan\|Loop\|Nu") {Int[100]="routed"}
}
if( sub("description ","",$bar)){ sub(" ","",$bar); Int[10]=$bar};
if( sub("switchport mode ","",$bar)){ sub(" ","",$bar); Int[100]=$bar}
else if($bar~"no switchport"){ Int[100]="routed"};
if( sub("ip address","",$bar)){
if( $bar!~"no") {Int[100]="routed"; Int[4]=$bar}
else if(Int[2]~"Vlan\|Loop\|Nu") {Int[100]="routed"}
}
if( sub("switchport access vlan ","",$bar)){ sub(" ","",$bar); Int[101]=$bar};
if( sub("switchport voice vlan ","",$bar)){ sub(" ","",$bar); Int[103]=$bar};
if( sub("switchport trunk native vlan ","",$bar)){ sub(" ","",$bar); Int[102]=$bar};
if( sub("shutdown","",$bar)){ if( $bar~"no" ){ Int[3]="open"} else { Int[3]="close"}};
bar++;
}
#########################################
# Verbose Output by category #
#########################################
if(__COMMAND~__COUNT_VLAN){
if( Int[3]~"close"){ Int[7]="N/A"; Int[8]="N/A"}
else if( Int[100]~"access"){ Int[7]=Int[101]; Int[8]=Int[103]}
else if(Int[100]~"trunk"){
if(Int[102]~"N/A"){ Int[7]=Int[100]}
else {Int[7]=Int[102];Int[8]=Int[103]}
}
else if(Int[100]~"routed"){
Int[7]="N/A"; Int[8]="N/A";
}
else if(Int[100]~"N/A"){
if(Int[2]~"Vlan"){Int[100]="routed"; Int[7]=Int[100]}
else if(Int[101]~"N/A" && Int[102]~"N/A"){ Int[7]=1}
else if(Int[101]~"N/A"){ Int[100]="trunk"; Int[7]=Int[102]; Int[8]=Int[104]}
else{Int[100]="access"; Int[7]=Int[101]; Int[8]=Int[103]}
}
else{Int[7]=Int[100]};
if(__COMMAND~__VERBOSE){
printf ("%-16s\t%-8s\t%-4s\t%-4s\t%s\n", Int[1],Int[2],Int[3],Int[7],Int[8]); }
if(Int[3]!~"close") {Vlan[Int[7]]++; if(!(Int[8]~"N/A")){Vlan[Int[8]]++;}}
}
else if(__COMMAND~__PORT_USAGE){
if(Int[2]~"Po|Nu|Vl|Lo"){}
else if(Int[2]~"0/49\|0/50\|0/51\|0/52"){}
else{
TOTAL_PORTS ++;
if(Int[3]~"close") {CLOSED_PORTS ++;}
}
if(__COMMAND~__VERBOSE){
printf ("%-16s\t%-8s\t%-4s\t%10s\t%10s\n", Int[1],Int[2],Int[3],CLOSED_PORTS,TOTAL_PORTS);}
}
}
function __PRINT_HELP_MESSAGE( _ARGV_END_, __THISFILE_NAME, __THISFILE_ALIAS, __FUNC_foo){
#########################################
# Usage and Help content #
#########################################
for(__FUNC_foo=1; __FUNC_foo < 75; __FUNC_foo++){printf("%s","=");}; print "" ;
__THISFILE_NAME="count_ports_vlan.awk "
__THISFILE_ALIAS="alias_name"
print
print "\33[1m""NAME: "
print "\33[0m\t"__THISFILE_NAME;
print
print "\33[1m""ALIAS: "
print "\33[0m\t"__THISFILE_ALIAS;
print
print "\33[1m""SYNOPSIS:"
print "\33[0m\t"__THISFILE_NAME"-c[v] config_file(s)";
print "\33[0m\t"__THISFILE_NAME"-u[v] config_file(s)";
print "\33[0m\t"__THISFILE_NAME"-h";
print
print "\33[1m""DESCRPITION:"
print
print "\33[1m""OPTIONS:"
print "\33[0m\t""-c\tCount ports number in each VLAN."
print "\33[0m\t""-u\tCount ports utilization by accumulating unshut ports."
print "\33[0m\t""-c\tDisplay this page."
print
print "\33[0m\t""config_file(s):""\tFilename(s) of the device configuration(s)."
print
print "\33[1m""Example:"
print "\33[0m\t"__THISFILE_NAME" -cv skbra/*"
print
print "\33[0m\t"__THISFILE_ALIAS" -u AUSYDCRS6506_01.txt"
print
}
END {
for(foo=1; foo < 75; foo++){printf("%s","=");}; print "" ;
#########################################
# Summarized output by category #
#########################################
if(__COMMAND~__COUNT_VLAN){
print "VLAN information:"; print "VLAN ID\t","Ports Number";
for (foo in Vlan){
if(Vlan[foo]!=0 && (foo!~"N/A\|routed\|trunk")){print "Vlan",foo":",Vlan[foo];}
}
for(foo=1; foo < 75; foo++){printf("%s","=");}; print "" ;
}
else if(__COMMAND~__PORT_USAGE){
print "Used ports statistics:"; print "Non-Shutdowned\t","Total Ports", "Percentage";
NON_SHUT_PORTS=TOTAL_PORTS - CLOSED_PORTS;
printf ("%-16d\t%-11d\t%+9.2f%1s\n", NON_SHUT_PORTS, TOTAL_PORTS, NON_SHUT_PORTS*100/TOTAL_PORTS,"%");
for(foo=1; foo < 75; foo++){printf("%s","=");}; print "" ;
};
}! |
|