Administração de switch Cisco
Publicado por Ricardo Lino Olonca (última atualização em 25/10/2017)
[ Hits: 6.403 ]
Homepage: ricardoolonca.blogspot.com.br
Esse script é uma amostra de como é possível administrar uma grupo de switchs Cisco através do Bash Script. Ele usa o programa sshpass para se conectar aos equipamentos. Ele ainda não está terminado, mas decidi publicá-lo por que estou meio sem tempo de trabalhar nele.
Com ele já é possível:
- trazer o número de portas 10giga, giga, fast e ethernet geral e por equipamento;
- quantas portas estão em up, down, desconectadas, com erros, em cada equipamento e o total geral;
- criar, alterar e copiar vlans;
- descobrir em qual porta de qual switch um equipamento está, possibilitando derrubar a porta em questão;
- configurar um ip no switch;
- acessar o switch;
- configurar uma interface do switch como acesso, trunk ou voip;
- associar uma interface a uma ou mais vlans.
#!/bin/bash # Gerencia os switchs e roteadores da empresa # Feito por Ricardo Lino Olonca em 11/10/2017 # Versão Alfa 0.13.1 #set -x # Variáveis # Local de armazemanento das informações. BASE=".sw" DB="sw.dat" DBDETALHES="swdetalhes.dat" DBPORTAS="swportas.dat" DBVLANS="swvlans.dat" DBMAC="swmac.dat" DBIP="swip.dat" # Checa se a pasta existe checa_arquivos(){ cd if [ ! -d $BASE ] then mkdir $BASE echo "Pasta criada" fi # Checa se o banco de dados existe if [ ! -f $BASE/$DB ] then touch $BASE/$DB elif [ ! -w $BASE/$DB ] then chmod +w $BASE/$DB fi if [ ! -f $BASE/$DBDETALHES ] then touch $BASE/$DBDETALHES elif [ ! -w $BASE/$DBDETALHES ] then chmod +w $BASE/$DBDETALHES fi if [ ! -f $BASE/$DBPORTAS ] then touch $BASE/$DBPORTAS elif [ ! -w $BASE/$DBPORTAS ] then chmod +w $BASE/$DBPORTAS fi if [ ! -f $BASE/$DBVLANS ] then touch $BASE/$DBVLANS elif [ ! -w $BASE/$DBVLANS ] then chmod +w $BASE/$DBVLANS fi if [ ! -f $BASE/$DBMAC ] then touch $BASE/$DBMAC elif [ ! -w $BASE/$DBMAC ] then chmod +w $BASE/$DBMAC fi if [ ! -f $BASE/$DBIP ] then touch $BASE/$DBIP elif [ ! -w $BASE/$DBIP ] then chmod +w $BASE/$DBIP fi } # Atualiza os dados de contiguração do switch. Devem ser passados o nome, ip, usuário, senha e senhaconfig como parâmetros. atualiza_conf(){ nome=$1 ip=$2 usuario=$3 senha=$4 senhaconfig=$5 echo $senha > /dev/shm/$$.pass echo "enable" > /dev/shm/$$ echo $senhaconfig >> /dev/shm/$$ echo "terminal length 0" >> /dev/shm/$$ echo "show running-config" >> /dev/shm/$$ echo "end" >> /dev/shm/$$ echo "exit" >> /dev/shm/$$ echo -n "$nome : " cat /dev/shm/$$ | sshpass -f/dev/shm/$$.pass ssh $usuario@$ip > $BASE/$nome 2>/dev/null if [ $? -ne 0 ] then echo -n "Não consegui conexão com o equipamento." else echo -n "Ok. " fi } # Atualiza os detalhes do switch. Devem ser passados o nome, ip, usuário, senha e senhaconfig como parâmetros. atualiza_detalhes(){ nome=$1 ip=$2 usuario=$3 senha=$4 senhaconfig=$5 echo "enable" > /dev/shm/$$ echo $senhaconfig >> /dev/shm/$$ echo "terminal length 0" >> /dev/shm/$$ echo "show version" >> /dev/shm/$$ echo "end" >> /dev/shm/$$ echo "exit" >> /dev/shm/$$ echo -n "Detalhes: " cat /dev/shm/$$ | sshpass -f/dev/shm/$$.pass ssh $usuario@$ip > $BASE/$nome.versao 2>/dev/null if [ $? -ne 0 ] then echo -n "Não consegui listar a versão do equipamento." else rom=`grep ROM $BASE/$nome.versao | head -1 | cut -d" " -f2-` uptime=`grep uptime $BASE/$nome.versao | cut -d" " -f4-` cpu=`grep -i cpu $BASE/$nome.versao| cut -d" " -f4-` ethernet=`grep Ethernet $BASE/$nome.versao | grep -v Virtual | grep -v Giga | cut -d" " -f1` giga=`grep Giga $BASE/$nome.versao | grep -v Ten | cut -d" " -f1` ten=`grep Giga $BASE/$nome.versao | grep Ten | cut -d" " -f1` ram=`grep memory $BASE/$nome.versao | grep volatile | cut -d" " -f1` grep -v $nome $BASE/$DBDETALHES > /dev/shm/$$ echo $nome:$rom:$uptime:$cpu:$ethernet:$giga:$ten:$ram >> /dev/shm/$$ sort /dev/shm/$$ -o $BASE/$DBDETALHES echo -n "Ok. " fi } # Atualiza os detalhes das portas do switch. Devem ser passados o nome, ip, usuário, senha e senhaconfig como parâmetros. atualiza_portas(){ nome=$1 ip=$2 usuario=$3 senha=$4 senhaconfig=$5 echo "enable" > /dev/shm/$$ echo $senhaconfig >> /dev/shm/$$ echo "terminal length 0" >> /dev/shm/$$ echo "show interface status" >> /dev/shm/$$ echo "end" >> /dev/shm/$$ echo "exit" >> /dev/shm/$$ echo -n "Portas: " cat /dev/shm/$$ | sshpass -f/dev/shm/$$.pass ssh $usuario@$ip > $BASE/$nome.portas 2>/dev/null if [ $? -ne 0 ] then echo -n "Não consegui listar as portas do equipamento." else grep -v ^$nome: $BASE/$DBPORTAS > /dev/shm/$$ mv /dev/shm/$$ $BASE/$DBPORTAS grep '/' $BASE/$nome.portas >/dev/shm/$$.$nome.portas linhas=`wc -l /dev/shm/$$.$nome.portas | cut -d" " -f1` for i in `seq $linhas` do linha=`head -$i /dev/shm/$$.$nome.portas | tail -1` porta=`echo "$linha" | cut -c1-10` descricao=`echo "$linha" | cut -c11-29` status=`echo "$linha" | cut -c30-42` vlan=`echo "$linha" | cut -c43-53` echo $nome:$porta:$descricao:$status:$vlan >> /dev/shm/$$.porta done cat /dev/shm/$$.porta >> $BASE/$DBPORTAS sort $BASE/$DBPORTAS | uniq > /dev/shm/$$.porta mv /dev/shm/$$.porta $BASE/$DBPORTAS echo -n "Ok. " fi } # Atualiza os detalhes das VLANS do switch. Devem ser passados o nome, ip, usuário, senha e senhaconfig como parâmetros. atualiza_vlans(){ nome=$1 ip=$2 usuario=$3 senha=$4 senhaconfig=$5 echo "enable" > /dev/shm/$$ echo $senhaconfig >> /dev/shm/$$ echo "terminal length 0" >> /dev/shm/$$ echo "show vlan" >> /dev/shm/$$ echo "end" >> /dev/shm/$$ echo "exit" >> /dev/shm/$$ echo -n "Vlans: " cat /dev/shm/$$ | sshpass -f/dev/shm/$$.pass ssh $usuario@$ip > $BASE/$nome.vlans 2>/dev/null if [ $? -ne 0 ] then echo -n "Não consegui listar as VLANS do equipamento." else grep -v ^$nome $BASE/$DBVLANS > /dev/shm/$$ mv /dev/shm/$$ $BASE/$DBVLANS grep ^[0-9] $BASE/$nome.vlans | grep -v \ 1500\ | sort -k1 -t" " -n > /dev/shm/$$.$nome.vlans vlanslocais=`wc -l /dev/shm/$$.$nome.vlans | cut -d" " -f1` for x in `seq $vlanslocais` do linha=`head -$x /dev/shm/$$.$nome.vlans | tail -1` vlanlocais=`echo "$linha" | cut -c1-5` descricao=`echo "$linha" | cut -c6-38` echo $nome:$vlanlocais:$descricao >> /dev/shm/$$.vlans done cat /dev/shm/$$.vlans >> $BASE/$DBVLANS sort $BASE/$DBVLANS -o /dev/shm/$$.vlans uniq /dev/shm/$$.vlans > $BASE/$DBVLANS echo -n "Ok. " fi } # Atualiza os detalhes da tabela de mac-address do switch. Devem ser passados o nome, ip, usuário, senha e senhaconfig como parâmetros. atualiza_macs(){ nome=$1 ip=$2 usuario=$3 senha=$4 senhaconfig=$5 echo "enable" > /dev/shm/$$ echo $senhaconfig >> /dev/shm/$$ echo "terminal length 0" >> /dev/shm/$$ echo "show mac address-table" >> /dev/shm/$$ echo "end" >> /dev/shm/$$ echo "exit" >> /dev/shm/$$ echo -n "Mac Address: " cat /dev/shm/$$ | sshpass -f/dev/shm/$$.pass ssh $usuario@$ip > $BASE/$nome.mac 2>/dev/null if [ $? -ne 0 ] then echo -n "Não consegui listar a tabela de endereços MAC." else grep -v ^$nome: $BASE/$DBMAC > /dev/shm/$$ mv /dev/shm/$$ $BASE/$DBMAC egrep '([0-9a-f]{4}\.){2}[0-9a-f]{4}' $BASE/$nome.mac> /dev/shm/$$.$nome.mac linhas=`wc -l /dev/shm/$$.$nome.mac | cut -d" " -f1` for i in `seq $linhas` do linha=`head -$i /dev/shm/$$.$nome.mac | tail -1` vlan=`echo "$linha" | cut -c1-8` macaddress=`echo "$linha" | cut -c9-22` porta=`echo "$linha" | cut -c38- | cut -d" " -f2 | grep -v ','` echo $nome:$vlan:$macaddress:$porta >> /dev/shm/$$.mac2 done cat /dev/shm/$$.mac2 >> $BASE/$DBMAC sort $BASE/$DBMAC | uniq > /dev/shm/$$.mac2 mv /dev/shm/$$.mac2 $BASE/$DBMAC echo -n "Ok. " fi } # Atualiza os dados referentes aos IP e Mac conectados aos switchs. Devem ser passados o nome, ip, usuário, senha e senhaconfig como parâmetros. atualiza_ip(){ nome=$1 ip=$2 usuario=$3 senha=$4 senhaconfig=$5 echo "terminal length 0" > /dev/shm/$$ echo "show ip arp" >> /dev/shm/$$ echo "exit" >> /dev/shm/$$ echo -n "IPs: " cat /dev/shm/$$ | sshpass -f/dev/shm/$$.pass ssh $usuario@$ip > $BASE/$nome.ip 2>/dev/null if [ $? -ne 0 ] then echo -n "Não consegui listar os IP conectados no equipamento." else egrep '([0-9a-f]{4}\.){2}[0-9a-f]{4}' $BASE/$nome.ip >/dev/shm/$$.$nome.ip linhas=`wc -l /dev/shm/$$.$nome.ip | cut -d" " -f1` for i in `seq $linhas` do linha=`head -$i /dev/shm/$$.$nome.ip | tail -1` ips=`echo "$linha" | cut -c11-27` macaddress=`echo "$linha" | cut -c39-53` echo $ips:$macaddress >> /dev/shm/$$.ip done sort /dev/shm/$$.ip | uniq >> $BASE/$DBIP sort $BASE/$DBIP | uniq > /dev/shm/$$.ip mv /dev/shm/$$.ip $BASE/$DBIP echo "Ok. " fi } # Atualiza os dados do servidor. Sempre passar o nome do switch como primeiro parâmetro. atualiza_dados(){ nome=$1 ip=`grep ^$nome: $BASE/$DB | cut -d":" -f2` usuario=`grep ^$nome: $BASE/$DB | cut -d":" -f4` senha=`grep ^$nome: $BASE/$DB | cut -d":" -f5` senhaconfig=`grep ^$nome: $BASE/$DB | cut -d":" -f6` atualiza_conf $nome $ip $usuario $senha $senhaconfig atualiza_detalhes $nome $ip $usuario $senha $senhaconfig atualiza_portas $nome $ip $usuario $senha $senhaconfig atualiza_vlans $nome $ip $usuario $senha $senhaconfig atualiza_macs $nome $ip $usuario $senha $senhaconfig atualiza_ip $nome $ip $usuario $senha $senhaconfig } # Atualiza todos os dados do switch. Sempre deve ser passado o nome do switch como primeiro parâmetro. atualizar(){ if [ $1 == "todos" ] then for i in `cut -d":" -f1 $BASE/$DB` do atualiza_dados $i done else nome=$1 atualiza_dados $nome fi rm /dev/shm/$$* 2>/dev/null } # Inclui um switch no sistema e coleta suas informações. incluir(){ echo -n "Nome do dispositivo :" read nome nome=`echo $nome | sed 's/ //g'` grep ^$nome: $BASE/$DB 2>/dev/null >/dev/null if [ $? -eq 0 ] then echo "Equipamento já cadastrado." read else echo -n "IP do dispositivo :" read ip echo -n "Descrição :" read descricao echo -n "Usuário para conexão :" read usuario echo -n "Senha de acesso :" read -s senha echo -n -e "\n" echo -n "Senha de acesso para configuração global :" read -s senhaglobal echo "$nome:$ip:$descricao:$usuario:$senha:$senhaglobal" >> $BASE/$DB sort $BASE/$DB -o $BASE/$DB atualizar $nome echo "Equipamento cadastrado." read fi } # Lista os switchs. listar(){ opcaolistar=a while [ $opcaolistar != "s" ] do linhas=`wc -l $BASE/$DB | cut -d" " -f1` for i in `seq $linhas` do echo -n $i" - " linha=`head -$i $BASE/$DB | tail -1 | cut -d":" -f1-3 --output-delimiter=" "` nome=`echo $linha | cut -d" " -f1` ip=`echo $linha | cut -d" " -f2` descricao=`echo $linha | cut -d" " -f3-` echo "$nome $ip $descricao" done echo -n -e "\n" echo "0 - Sair" echo -n -e "\n" echo -n "Digite a opção: " read opcaolistar case $opcaolistar in 0) return ;; *) echo $opcaolistar | grep -e [a-z] 2>/dev/null >/dev/null if [ $? -eq 0 ] then return else nome=`head -$opcaolistar $BASE/$DB | tail -1 | cut -d":" -f1` listardetalhes $nome fi ;; esac done } # Acessa o switch. Deve-se passar o nome do switch acessar(){ nome=$1 ip=`grep ^$nome $BASE/$DB | cut -d":" -f2` usuario=`grep ^$nome $BASE/$DB | cut -d":" -f4` senha=`grep ^$nome $BASE/$DB | cut -d":" -f5` echo $senha > /dev/shm/$$.pass sshpass -f/dev/shm/$$.pass ssh $usuario@$ip rm /dev/shm/$$* } # Copia uma VLAN para outros switchs. Precisa passar o id da VLAN como parâmetro. copiavlan(){ vlan=$1 cont=1 unset switch echo -n -e '\n' echo "0 - Todos" for i in `cut -d":" -f1 $BASE/$DB` do echo "$cont - $i" let cont=cont+1 done echo -n -e '\n' echo "Digite "c" para cancelar." echo -n -e '\n' while [ -z $switch ] do echo -n "Para qual switch você quer copiar a VLAN?: " read switch echo $switch | grep -v '[[:punct:]]' | grep -v '[[:alpha:]]' 2>/dev/null >/dev/null if [ $? -ne 0 ] then break elif [ $switch -ge $cont ] then break fi case $switch in 0) unset nomelocal vlanlocal=$vlan for i in `cut -d":" -f1 $BASE/$DB` do grep :$vlanlocal\ : $BASE/$DBVLANS | grep $i 2>/dev/null >/dev/null if [ $? -ne 0 ] then nomelocal=$nomelocal" "$i fi done ;; *) nomelocal=`cut -d":" -f1 $BASE/$DB | head -$switch | tail -1` ;; esac for i in $nomelocal do ip=`grep ^$i: $BASE/$DB | cut -d":" -f2` usuario=`grep ^$i: $BASE/$DB | cut -d":" -f4` senha=`grep ^$i: $BASE/$DB | cut -d":" -f5` senhaconfig=`grep ^$i: $BASE/$DB | cut -d":" -f6` nomevlan=`grep :$vlanlocal\ : $BASE/$DBVLANS | head -1 | cut -d":" -f3` criacaovlan $i $ip $usuario $senha $senhaconfig $vlanlocal $nomevlan done done } # Exclui um IP do switch. O nome do switch e a VLAN precisaM se passado como parâmetro. excluirip(){ nome=$1 vlan=$2 ip=`grep ^$nome: $BASE/$DB | cut -d":" -f2` usuario=`grep ^$nome: $BASE/$DB | cut -d":" -f4` senha=`grep $nome: $BASE/$DB | cut -d":" -f5` senhaconfig=`grep $nome: $BASE/$DB | cut -d":" -f6` echo $senha > /dev/shm/$$.pass echo "Apagando o IP da vlan $vlan no switch $nome." echo "terminal length 0" > /dev/shm/$$ echo "enable" >> /dev/shm/$$ echo "$senhaconfig" >> /dev/shm/$$ echo "configure terminal" >> /dev/shm/$$ echo "no interface vlan $vlan" >> /dev/shm/$$ echo "exit" >> /dev/shm/$$ echo "copy running-config startup-config" >> /dev/shm/$$ cat /dev/shm/$$ | sshpass -f/dev/shm/$$.pass ssh $usuario@$ip >/dev/null 2>/dev/null echo "O IP foi apagado" read atualiza_ip $nome $ip $usuario $senha $senhaconfig } # Altera os dados de uma VLAN de um switch. É necessário passar o nome do swtich e o número da VLAN como parâmetros. alterarvlan(){ nome=$1 vlan=$2 echo "A VLAN está presente nos seguintes switchs" echo -n -e "\n" grep $vlan $BASE/$DBVLANS | cut -d":" -f1 echo -n -e '\n' echo "1 - Mudar a descrição" echo "2 - Excluir" echo "3 - Copiar a VLAN para outros switchs" echo "4 - Configurar um IP" echo "5 - Excluir um IP" echo -n -e '\n' echo "0 - Voltar" echo -n -e '\n' echo -n "Digite a opção :" read opcaoalteravlan case $opcaoalteravlan in 1) echo -n "Digite o nome da VLAN :" read descricao if [ 1 != 1$descricao ] then if [ $nome == "todos" ] then unset nome for i in `grep :$vlan\ : $BASE/$DBVLANS | cut -d":" -f1` do nome="$nome$i " done fi vlanlocal=$vlan descricaolocal=$descricao for i in $nome do echo $i ip=`grep ^$i: $BASE/$DB | cut -d":" -f2` usuario=`grep ^$i: $BASE/$DB | cut -d":" -f4` senha=`grep ^$i: $BASE/$DB | cut -d":" -f5` senhaconfig=`grep ^$i: $BASE/$DB | cut -d":" -f6` echo $senha > /dev/shm/$$.pass echo "enable" > /dev/shm/$$ echo $senhaconfig >> /dev/shm/$$ echo "configure terminal" >> /dev/shm/$$ echo "vlan $vlanlocal" >> /dev/shm/$$ echo "name $descricaolocal" >> /dev/shm/$$ echo "end" >> /dev/shm/$$ echo "copy running-config startup-config" >>/dev/shm/$$ echo "" >>/dev/shm/$$ echo "exit" >> /dev/shm/$$ cat /dev/shm/$$ | sshpass -f/dev/shm/$$.pass ssh $usuario@$ip >/dev/null 2>/dev/null echo -n -e '\n' echo "Descrição alterada." linha=`grep -n ^$i: $BASE/$DB | cut -d":" -f1` atualiza_vlans $i $ip $usuario $senha $senhaconfig echo -n -e '\n' done rm /dev/shm/$$* fi ;; 2) if [ $nome == "todos" ] then unset nome for i in `grep :$vlan\ : $BASE/$DBVLANS | cut -d":" -f1` do nome="$nome$i " done fi vlanlocal=$vlan for i in $nome do echo -n -e '\n' echo $i ip=`grep ^$i: $BASE/$DB | cut -d":" -f2` usuario=`grep ^$i: $BASE/$DB | cut -d":" -f4` senha=`grep ^$i: $BASE/$DB | cut -d":" -f5` senhaconfig=`grep ^$i: $BASE/$DB | cut -d":" -f6` echo $senha > /dev/shm/$$.pass echo "enable" > /dev/shm/$$ echo $senhaconfig >> /dev/shm/$$ echo "terminal length 0" >> /dev/shm/$$ echo "configure terminal" >> /dev/shm/$$ echo "no vlan $vlanlocal" >> /dev/shm/$$ echo "end" >> /dev/shm/$$ echo "copy running-config startup-config" >>/dev/shm/$$ echo "" >>/dev/shm/$$ echo "exit" >> /dev/shm/$$ cat /dev/shm/$$ | sshpass -f/dev/shm/$$.pass ssh $usuario@$ip >/dev/null 2>/dev/null echo -n -e '\n' echo "VLAN $vlanlocal excluída" grep -v ^$i:$vlanlocal\ : $BASE/$DBVLANS | sort -o $BASE/$DBVLANS atualiza_vlans $i $ip $usuario $senha $senhaconfig done rm /dev/shm/$$* ;; 3) copiavlan $vlan ;; 4) echo -n "Digite o IP: " read iplocal echo $iplocal | sed 's/\.//g' | grep -v '[[:punct:]]' | grep -v '[[:alpha:]]' 2>/dev/null >/dev/null if [ $? -ne 0 ] then echo "IP inválido." else erro=0 for i in `echo $iplocal | sed 's/\./ /g'` do if [ $i -lt 0 ] && [ $i -gt 255 ] then erro=1 fi done if [ $erro -eq 1 ] 2>/dev/null >/dev/null then echo "O IP é inválido." else echo -n "Digite a máscara de rede (255.255.255.0=24; 255.255.0.0=16, etc): " read mascara echo $mascara | sed 's/\.//g' | grep -v '[[:punct:]]' | grep -v '[[:alpha:]]' 2>/dev/null >/dev/null if [ $? -ne 0 ] || [ $mascara -lt 0 ] || [ $mascara -gt 32 ] then echo "Máscara de rede inválida." else configuraip $nome $vlan $iplocal $mascara fi fi fi read ;; 5) excluirip $nome $vlan ;; *) return ;; esac } # Apenas listas as VLANs de um swithc. O nome do switch deve ser passado como parâmetro. listarvlanswitch(){ nome=$1 echo -n -e '\n' linhas=`grep ^$nome: $BASE/$DBVLANS | wc -l` for i in `seq $linhas` do vlan=`grep ^$nome: $BASE/$DBVLANS | head -$i | tail -1 | cut -d":" -f2` desc=`grep ^$nome: $BASE/$DBVLANS | head -$i | tail -1 | cut -d":" -f3` echo "$vlan - $desc" done echo -n -e '\n' } # Lista as VLANs existentes no switch. É necessário passar o nome do switch como parâmetro. listarvlans(){ nome=$1 listarvlanswitch $nome echo "0 - Voltar" echo -n -e '\n' echo -n "Qual vlan você quer alterar? :" read opcaovlan if [ $opcaovlan -ne 0 ] then alterarvlan $nome $opcaovlan fi } # Habilita mais uma VLAN em uma interface de acesso. Precisa passar como parâmetro o nome do switch, o nome da interface e o id da VLAN habilitavlanacesso(){ nome=$1 interface=$2 vlan=$3 echo -n "Esta é uma VLAN de VOiP?: " read voip echo "Vou configura a interface $interface do switch $nome na VLAN $vlan" ip=`grep ^$nome: $BASE/$DB | cut -d":" -f2` usuario=`grep ^$nome: $BASE/$DB | cut -d":" -f4` senha=`grep $nome: $BASE/$DB | cut -d":" -f5` senhaconfig=`grep $nome: $BASE/$DB | cut -d":" -f6` echo $senha > /dev/shm/$$.pass echo "terminal length 0" > /dev/shm/$$ echo "enable" >> /dev/shm/$$ echo $senhaconfig >>/dev/shm/$$ echo "configure terminal" >>/dev/shm/$$ echo "interface $interface" >>/dev/shm/$$ if [ $voip == "s" ] || [ $voip == "S" ] then echo "switchport voice vlan $vlan" >>/dev/shm/$$ else echo "switchport access vlan $vlan" >>/dev/shm/$$ fi echo "end" >>/dev/shm/$$ echo "copy running-config startup-config" >>/dev/shm/$$ echo "" >>/dev/shm/$$ echo "exit" >> /dev/shm/$$ cat /dev/shm/$$ | sshpass -f/dev/shm/$$.pass ssh $usuario@$ip >/dev/shm/$$.trunk 2>/dev/null } # Habilita mais uma VLAN em uma interface em trunk. Precisa passar como parâmetro o nome do switch, o nome da interface e o id da VLAN habilitavlantrunk(){ nome=$1 interface=$2 vlan="$3" echo "terminal length 0" > /dev/shm/$$ echo "enable" >> /dev/shm/$$ echo $senhaconfig >>/dev/shm/$$ echo "configure terminal" >>/dev/shm/$$ echo "interface $interface" >>/dev/shm/$$ echo "switchport trunk allowed vlan $vlan" >>/dev/shm/$$ echo "end" >>/dev/shm/$$ echo "copy running-config startup-config" >>/dev/shm/$$ echo "" >>/dev/shm/$$ echo "exit" >> /dev/shm/$$ cat /dev/shm/$$ | sshpass -f/dev/shm/$$.pass ssh $usuario@$ip >/dev/shm/$$.trunk 2>/dev/null atualiza_portas $nome $ip $usuario $senha $senhaconfig } # Altera a descrição de uma interface de rede. O nome do switch, a interface e a nova descrição devem ser passados como parâmetros. alteradescricao(){ nomelocal=$1 interface=$2 descricao="$3" echo "Vou alterar a descrição da interface $interface do switch $nomelocal para $descricao." ip=`grep ^$nomelocal: $BASE/$DB | cut -d":" -f2` usuario=`grep ^$nomelocal: $BASE/$DB | cut -d":" -f4` senha=`grep $nomelocal: $BASE/$DB | cut -d":" -f5` senhaconfig=`grep $nomelocal: $BASE/$DB | cut -d":" -f6` echo $senha >/dev/shm/$$.pass echo "enable" >/dev/shm/$$ echo $senhaconfig >>/dev/shm/$$ echo "terminal length 0" >>/dev/shm/$$ echo "configure terminal" >>/dev/shm/$$ echo "interface $interface" >>/dev/shm/$$ echo "description $descricao" >>/dev/shm/$$ echo "end" >>/dev/shm/$$ echo "copy running-config startup-config" >>/dev/shm/$$ echo "" >>/dev/shm/$$ echo "exit" >> /dev/shm/$$ cat /dev/shm/$$ | sshpass -f/dev/shm/$$.pass ssh $usuario@$ip >/dev/shm/$$.trunk 2>/dev/null read } # Configura um endereço IPv4 na VLAN do switch. O nome do Switch, a VLAN, o IP e a máscara de rede precisam ser passados como parâmetros. configuraip(){ nomelocal=$1 vlan=$2 ip=$3 case $4 in 0) mascara=0.0.0.0 ;; 1) mascara=128.0.0.0 ;; 2) mascara=192.0.0.0 ;; 3) mascara=224.0.0.0 ;; 4) mascara=240.0.0.0 ;; 5) mascara=248.0.0.0 ;; 6) mascara=252.0.0.0 ;; 7) mascara=254.0.0.0 ;; 8) mascara=255.0.0.0 ;; 9) mascara=255.128.0.0 ;; 10) mascara=255.192.0.0 ;; 11) mascara=255.224.0.0 ;; 12) mascara=255.240.0.0 ;; 13) mascara=255.248.0.0 ;; 14) mascara=255.252.0.0 ;; 15) mascara=255.254.0.0 ;; 16) mascara=255.255.0.0 ;; 17) mascara=255.255.128.0 ;; 18) mascara=255.255.192.0 ;; 19) mascara=255.255.224.0 ;; 20) mascara=255.255.240.0 ;; 21) mascara=255.255.248.0 ;; 22) mascara=255.255.252.0 ;; 23) mascara=255.255.254.0 ;; 24) mascara=255.255.255.0 ;; 25) mascara=255.255.255.128 ;; 26) mascara=255.255.255.192 ;; 27) mascara=255.255.255.224 ;; 28) mascara=255.255.255.240 ;; 29) mascara=255.255.255.248 ;; 30) mascara=255.255.255.252 ;; 31) mascara=255.255.255.254 ;; 32) mascara=255.255.255.255 ;; esac echo -n -e '\n' echo "Vou configurar o ip $ip/$mascara na VLAN $vlan do switch $nomelocal" iplocal=`grep ^$nomelocal: $BASE/$DB | cut -d":" -f2` usuario=`grep ^$nomelocal: $BASE/$DB | cut -d":" -f4` senha=`grep $nomelocal: $BASE/$DB | cut -d":" -f5` senhaconfig=`grep $nomelocal: $BASE/$DB | cut -d":" -f6` echo $senha >/dev/shm/$$.pass echo "enable" >/dev/shm/$$ echo $senhaconfig >>/dev/shm/$$ echo "terminal length 0" >>/dev/shm/$$ echo "configure terminal" >>/dev/shm/$$ echo "interface vlan$vlan" >>/dev/shm/$$ echo "ip address $ip $mascara" >>/dev/shm/$$ echo "end" >> /dev/shm/$$ echo "copy running-config startup-config" >>/dev/shm/$$ echo "" >>/dev/shm/$$ echo "exit" >> /dev/shm/$$ cat /dev/shm/$$ | sshpass -f/dev/shm/$$.pass ssh $usuario@$iplocal >/dev/shm/$$ 2>/dev/null atualiza_ip $nomelocal $iplocal $usuario $senha $senhaconfig } #Mostra informações de uma interface de rede de um switch. É necessário passar no nome do switch e a interface como parâmetros showinterface(){ nomelocal=$1 interface=$2 iplocal=`grep ^$nomelocal: $BASE/$DB | cut -d":" -f2` usuario=`grep ^$nomelocal: $BASE/$DB | cut -d":" -f4` senha=`grep $nomelocal: $BASE/$DB | cut -d":" -f5` echo $senha >/dev/shm/$$.pass echo "show interface $interface" >/dev/shm/$$ echo "exit" >> /dev/shm/$$ cat /dev/shm/$$ cat /dev/shm/$$ | sshpass -f/dev/shm/$$.pass ssh $usuario@$iplocal | more } # Administra uma interface do switch. É necessário passar o nome do switch e o nome da interface adminterfaces(){ nomelocal=$1 interfacelocal=$2 unset opcao echo -n -e "\n" echo -e "Switch: $nomelocal" '\t' "Interface: $interfacelocal" echo -n -e "\n" echo "1 - Incluir em uma VLAN" echo "2 - Excluir de uma VLAN" echo "3 - Derrubar a interface" echo "4 - Levantar a interface" echo "5 - Alterar a descrição" echo "6 - Mais informações" echo -n -e "\n" echo -n "Digite a opção (0 para cancelar): " read opcao case $opcao in 1) listarvlanswitch $nomelocal echo -n "Digite a VLAN :" read opcaovlan grep ^$nomelocal:$opcaovlan\ : $BASE/$DBVLANS >/dev/null if [ $? -eq 0 ] then grep ^$nomelocal:$interfacelocal\ : $BASE/$DBPORTAS | grep trunk >/dev/null if [ $? -eq 0 ] then echo "Vou configura a interface $interface do switch $nome na(s) VLAN(s) $vlan" ip=`grep ^$nomelocal: $BASE/$DB | cut -d":" -f2` usuario=`grep ^$nomelocal: $BASE/$DB | cut -d":" -f4` senha=`grep $nomelocal: $BASE/$DB | cut -d":" -f5` senhaconfig=`grep $nomelocal: $BASE/$DB | cut -d":" -f6` echo $senha > /dev/shm/$$.pass echo "terminal length 0" > /dev/shm/$$ echo "show interface $interfacelocal trunk | begin Vlan" >> /dev/shm/$$ echo "exit" >> /dev/shm/$$ cat /dev/shm/$$ | sshpass -f/dev/shm/$$.pass ssh $usuario@$ip >/dev/shm/$$.trunk 2>/dev/null vlanlocal=`head -4 /dev/shm/$$.trunk | tail -1 | awk '{print $2}'` echo $vlanlocal | grep none >/dev/null if [ $? -eq 0 ] then echo $opcaovlan else opcaovlan="$opcaovlan,$vlanlocal" fi habilitavlantrunk $nomelocal $interfacelocal $opcaovlan else habilitavlanacesso $nomelocal $interfacelocal $opcaovlan fi fi atualiza_portas $nomelocal $ip $usuario $senha $senhaconfig ;; 2) grep ^$nomelocal:$interfacelocal $BASE/$DBPORTAS | grep trunk >/dev/null if [ $? -eq 0 ] then ip=`grep ^$nomelocal: $BASE/$DB | cut -d":" -f2` usuario=`grep ^$nomelocal: $BASE/$DB | cut -d":" -f4` senha=`grep $nomelocal: $BASE/$DB | cut -d":" -f5` senhaconfig=`grep $nomelocal: $BASE/$DB | cut -d":" -f6` echo $senha > /dev/shm/$$.pass echo "terminal length 0" > /dev/shm/$$ echo "show interface $interfacelocal trunk | begin Vlan" >> /dev/shm/$$ echo "exit" >> /dev/shm/$$ cat /dev/shm/$$ | sshpass -f/dev/shm/$$.pass ssh $usuario@$ip >/dev/shm/$$.trunk 2>/dev/null for i in `head -4 /dev/shm/$$.trunk | tail -1 | awk '{print $2}' | sed 's/,/ /g' ` do grep ^$nomelocal:$i\ : $BASE/$DBVLANS | cut -d":" -f2- done echo -n -e "\n" echo -n "Qual VLAN você quer excluir da interface? (0 para cancelar): " read opcao if [ $opcao -eq 0 ] then return fi echo "Vou retirar a VLAN $opcao." unset x for i in `strings /dev/shm/$$.trunk | head -4 | tail -1 | awk '{print $2}' | sed 's/,/ /g'` do if [ $i -ne $opcao ] then x="$x $i" fi done echo $x read habilitavlantrunk $nomelocal $interfacelocal "$x" else echo "Esta interface não está em trunk." fi atualiza_portas $nomelocal $ip $usuario $senha $senhaconfig ;; 3|4) ip=`grep $nomelocal $BASE/$DB | cut -d":" -f2` usuario=`grep $nomelocal $BASE/$DB | cut -d":" -f4` senha=`grep $nomelocal $BASE/$DB | cut -d":" -f5` senhaconfig=`grep $nomelocal $BASE/$DB | cut -d":" -f6` echo "Alterando o status da porta." echo $senha > /dev/shm/$$.pass echo "enable" > /dev/shm/$$ echo $senhaconfig >> /dev/shm/$$ echo "terminal length 0" >> /dev/shm/$$ echo "configure terminal" >> /dev/shm/$$ echo "interface $interfacelocal" >> /dev/shm/$$ if [ $opcao -eq 3 ] then echo "shutdown" >> /dev/shm/$$ else echo "no shutdown" >> /dev/shm/$$ fi echo "end" >> /dev/shm/$$ echo "copy running-config startup-config" >>/dev/shm/$$ echo "" >>/dev/shm/$$ echo "exit" >> /dev/shm/$$ cat /dev/shm/$$ | sshpass -f/dev/shm/$$.pass ssh $usuario@$ip >/dev/null 2>/dev/null echo "Porta alterada." read atualiza_portas $nomelocal $ip $usuario $senha $senhaconfig ;; 5) echo -n "Digite a descrição para a interface $interfacelocal (0 para cancelar): " read descricao if [ "$descricao" != "0" ] then alteradescricao $nomelocal $interfacelocal "$descricao" atualiza_portas $nomelocal $ip $usuario $senha $senhaconfig fi ;; 6) showinterface $nomelocal $interfacelocal read ;; *) return ;; esac rm /dev/shm/$$* } # Lista as interfaces do switch. É necessário passar o nome do switch como parâmetro. listarinterfaces(){ nomelocal=$1 unset interfacelocal echo -e "Switch" '\t' "Porta" '\t' "Descrição" '\t' "Situação" '\t' "VLAN" grep ^$nomelocal $BASE/$DBPORTAS >/dev/shm/$$ linhas=`wc -l /dev/shm/$$ | cut -d" " -f1` for i in `seq $linhas` do echo -n "$i - " head -$i /dev/shm/$$ | tail -1 done echo -n -e "\n" while [ -z $interfacelocal ] do echo -n "Digite a interface (0 para sair): " read interfacelocal done if [ $interfacelocal != "0" ] then echo $interfacelocal | grep -v '[[:punct:]]' | grep -v '[[:alpha:]]' 2>/dev/null >/dev/null if [ $? -eq 0 ] then if [ $interfacelocal -le $linhas ] && [ $interfacelocal -gt 0 ] then interfacelocal=`head -$interfacelocal /dev/shm/$$ | tail -1 | cut -d":" -f2` adminterfaces $nomelocal $interfacelocal fi fi fi echo -n -e "\n" } # Altera os dados de um switch já cadastrado. O nome do equipamento deve ser passado como parâmetro. alterarswitch(){ nome=$1 ip=`grep ^$nome: $BASE/$DB | cut -d":" -f2` descricao=`grep ^$nome: $BASE/$DB | cut -d":" -f3` usuario=`grep ^$nome: $BASE/$DB | cut -d":" -f4` echo -n "Nome do dispositivo ($nome):" read nomelocal if [ "a"$nomelocal != "a" ] then nomeantigo=$nome nome=$nomelocal grep ^$nome: $BASE/$DB 2>/dev/null >/dev/null if [ $? -eq 0 ] then echo "Esse nome de equipamento já existe no cadastrado." read return fi fi echo -n "IP do dispositivo ($ip): " read iplocal if [ "a"$iplocal != "a" ] then ip=$iplocal fi echo -n "Descrição ($descricao): " read descricaolocal if [ "a"$descricaolocal != "a" ] then descricao=$descricaolocal fi echo -n "Usuário para conexão ($usuario): " read usuariolocal if [ "a"$usuariolocal != "a" ] then usuario=$usuariolocal fi echo -n "Senha de acesso : " read -s senha echo -n -e "\n" echo -n "Senha de acesso para configuração global :" read -s senhaglobal grep -v ^$nomeantigo: $BASE/$DB | sort -o $BASE/$DB echo "$nome:$ip:$descricao:$usuario:$senha:$senhaglobal" >> $BASE/$DB echo -n -e "\n" sort $BASE/$DB -o $BASE/$DB sed s/$nomeantigo:/$nome:/ $BASE/$DBDETALHES | sort -o $BASE/$DBDETALHES sed s/$nomeantigo:/$nome:/ $BASE/$DBMAC | sort -o $BASE/$DBMAC sed s/$nomeantigo:/$nome:/ $BASE/$DBPORTAS | sort -o $BASE/$DBPORTAS sed s/$nomeantigo:/$nome:/ $BASE/$DBVLANS | sort -o $BASE/$DBVLANS echo "Equipamento atualizado." read } # Lista dos detalhes de um switch. Deve-se passar o nome do swtich como parâmetro listardetalhes(){ opcaoexec=a while [ $opcaoexec != "s" ] do nome="$1" linha=`grep ^$nome: $BASE/$DBDETALHES` hostname=`grep hostname $BASE/$nome | cut -d" " -f2` rom=`echo $linha | tail -1 | cut -d":" -f2` uptime=`echo $linha | tail -1 | cut -d":" -f3` cpu=`echo $linha | tail -1 | cut -d":" -f4` ethernet=`echo $linha | tail -1 | cut -d":" -f5` giga=`echo $linha | tail -1 | cut -d":" -f6` ten=`echo $linha | tail -1 | cut -d":" -f7` ram=`echo $linha | tail -1 | cut -d":" -f8` vlan=`grep ^$nome: $BASE/$DBVLANS | wc -l` echo "Nome do equipamento: $hostname" echo "Versão da ROM : $rom" echo "A quanto tempo está ligado: $uptime" echo "Tipo de CPU: $cpu" echo "Quantidade de VLANs: $vlan" echo "Quantidade de interfaces Fast Ethernet: $ethernet" echo "Quantidade de interfaces Giga Ethernet: $giga" echo "Quantidade de interfaces 10 Giga Ethernet: $ten" echo "Memória Ram: $ram" echo -n -e "\n" echo "1 - Acessar" echo "2 - Atualizar" echo "3 - Listar VLANs" echo "4 - Criar VLAN" echo "5 - Listar interfaces" echo "6 - Alterar informações de acesso" echo "7 - Exclui" echo -n -e "\n" echo "0 - Sair" echo -n -e "\n" echo -n "Digite a opção: " read opcaoexec echo $opcaoexec | grep -e [a-z] 2>/dev/null >/dev/null case $opcaoexec in 1) acessar $nome ;; 2) atualizar $nome ;; 3) listarvlans $nome ;; 4) criarvlan $nome ;; 5) listarinterfaces $nome ;; 6) alterarswitch $nome ;; 7) excluir $nome read return ;; *) return ;; esac done } # Exclui um dispostivo. excluir(){ x=a$1 if [ $x == "a" ] then echo -n -e "\n" cont=1 for i in `cut -d":" -f1 $BASE/$DB` do echo "$cont - $i" let cont=$cont+1 done echo -n -e "\n" echo "0 - Cancelar" echo -n -e "\n" echo -n "Qual equipamento você quer excluir? :" read excluir else excluir=`grep -n ^$nome: $BASE/$DB | cut -d":" -f1` fi if [ $excluir -ne 0 ] then erro=0 equipamento=`head -$excluir $BASE/$DB | tail -1 | cut -d":" -f1 ` grep -v ^$equipamento $BASE/$DB > /dev/shm/$$ mv /dev/shm/$$ $BASE/$DB grep -v ^$equipamento $BASE/$DBDETALHES > /dev/shm/$$ mv /dev/shm/$$ $BASE/$DBDETALHES grep -v ^$equipamento $BASE/$DBPORTAS > /dev/shm/$$ mv /dev/shm/$$ $BASE/$DBPORTAS grep -v ^$equipamento $BASE/$DBVLANS > /dev/shm/$$ mv /dev/shm/$$ $BASE/$DBVLANS grep -v ^$equipamento $BASE/$DBMAC > /dev/shm/$$ mv /dev/shm/$$ $BASE/$DBMAC rm $BASE/$equipamento $BASE/$equipamento.* echo -n -e "\n" echo "Equipamento excluído." fi } # Cria uma VLAN. É necessário passar o nome, ip, usuário, senha, senha de config do switch, id e nome da VLAN criacaovlan(){ nome=$1 ip=$2 usuario=$3 senha=$4 senhaconfig=$5 id=$6 vlan=$7 echo "$senha" >/dev/shm/$$.pass echo "terminal length 0" >/dev/shm/$$ echo "enable" >>/dev/shm/$$ echo "$senhaconfig" >>/dev/shm/$$ echo "configure terminal" >>/dev/shm/$$ echo "vlan $id" >>/dev/shm/$$ echo "name $vlan" >>/dev/shm/$$ echo "copy running-config startup-config" >>/dev/shm/$$ echo "" >>/dev/shm/$$ echo "exit" >> /dev/shm/$$ cat /dev/shm/$$ | sshpass -f/dev/shm/$$.pass ssh $usuario@$ip >/dev/null 2>/dev/null echo -n -e '\n' echo "VLAN criada." atualiza_vlans $nome $ip $usuario $senha $senhaconfig rm /dev/shm/$$* } # Criar uma VLAN no switch especificado. Precisa passar o nome do equipamento como parâmetro criarvlan(){ echo -n -e '\n' echo -n "Digite o ID da VLAN: " read id echo $id | grep -v '[[:punct:]]' | grep -v '[[:alpha:]]' 2>/dev/null >/dev/null if [ $? -ne 0 ] then echo "O ID precisa ser um número inteiro." read elif [ -z $id ] then return elif [ $id -lt 2 ] || [ $id -gt 4098 ] then echo "O ID é inválido" read else grep :$id\ : $BASE/$DBVLANS | grep -v ^$nome2 >/dev/null >/dev/null if [ $? -ne 0 ] then echo -n "Digite o nome da VLAN :" read nomevlan if [ -z $nomevlan ] then nomevlan="VLAN$id" fi ip=`grep ^$nome: $BASE/$DB | cut -d":" -f2` usuario=`grep ^$nome: $BASE/$DB | cut -d":" -f4` senha=`grep ^$nome: $BASE/$DB | cut -d":" -f5` senhaconfig=`grep ^$nome: $BASE/$DB | cut -d":" -f6` criacaovlan $nome $ip $usuario $senha $senhaconfig $id $nomevlan read else echo "A VLAN já existe." read fi fi } # Mostra a quantidade de equipamento em cada VLAN. vlans(){ somaportas=0 somahosts=0 echo -e Vlan '\t' Nome '\t\t' Portas' 'Hosts for i in `cut -d":" -f2 $BASE/$DBVLANS | sort -n | uniq` do desc=`grep :$i\ : $BASE/$DBVLANS | cut -d":" -f3- | head -1 | sed 's/://g'` portas=`cut -d":" -f5 $BASE/$DBPORTAS | grep ^$i$ | wc -l` hosts=`grep " $i " $BASE/$DBMAC | cut -d":" -f3 | sort | uniq | wc -l` echo -e $i '\t' $desc '\t' $portas '\t '$hosts let somahosts=$somahosts+$hosts let somaportas=$somaportas+$portas done echo -n -e '\n' echo -e '\t 'Portas = $somaportas '\t' Hosts = $somahosts echo -n -e "\n" echo "Opções" echo -n -e "\n" echo "0 - Sair" echo "Digite o número da VLAN para alterá-la." echo -n -e "\n" echo -n "Digite a opção: " read opcaovlan case $opcaovlan in 0) echo "Você escolheu sair" ;; *) alterarvlan todos $opcaovlan ;; esac } # Mostra em qual porta de qual switch um determinado IP está, e permite derrubar a porta. mac(){ echo -n -e "\n" while [ -n $ip ] do echo -n "Digite o endereço IP (0 para cancelar): " read ip if [ -z $ip ] then ip=0 elif [ $ip == "0" ] then return else break fi done mac=`grep $ip\ : $BASE/$DBIP | cut -d":" -f2 | head -1` if [ -z $mac ] then echo "Não encontrei o ip solicitado" read return fi linhas=`grep -i $mac $BASE/$DBMAC | wc -l` if [ $linhas -ne 0 ] then echo -n -e "\n" echo -e Switch '\t' VLAN '\t' Porta for i in `seq $linhas` do switch=`grep -i $mac $BASE/$DBMAC | head -$i | tail -1 | cut -d":" -f1` vlan=`grep -i $mac $BASE/$DBMAC | head -$i | tail -1 | cut -d":" -f2` porta=`grep -i $mac $BASE/$DBMAC | head -$i | tail -1 | cut -d":" -f4-` prob=`grep "$porta" $BASE/$DBMAC | wc -l` echo -e $prob' '$i' '$switch' '$vlan' '$porta >> /dev/shm/$$ done sort -n /dev/shm/$$ | head -1 | awk '{print $3"\t"$4"\t"$5}' echo -n -e "\n" echo -n "Devo derrubar a porta? : (s/n)" read opcaomac if [ $opcaomac == "s" ] || [ $opcao == "S" ] then switch=`sort -n /dev/shm/$$ | cut -d" " -f3 | head -1` porta=`sort -n /dev/shm/$$ | cut -d" " -f5 | head -1` ip=`grep $switch $BASE/$DB | cut -d":" -f2` usuario=`grep $switch $BASE/$DB | cut -d":" -f4` senha=`grep $switch $BASE/$DB | cut -d":" -f5` senhaconfig=`grep $switch $BASE/$DB | cut -d":" -f6` echo "Derrubando a porta." echo $senha > /dev/shm/$$.pass echo "enable" > /dev/shm/$$ echo $senhaconfig >> /dev/shm/$$ echo "terminal length 0" >> /dev/shm/$$ echo "configure terminal" >> /dev/shm/$$ echo "interface $porta" >> /dev/shm/$$ echo "shutdown" >> /dev/shm/$$ echo "end" >> /dev/shm/$$ echo "copy running-config startup-config" >>/dev/shm/$$ echo "" >>/dev/shm/$$ echo "exit" >> /dev/shm/$$ cat /dev/shm/$$ | sshpass -f/dev/shm/$$.pass ssh $usuario@$ip >/dev/null 2>/dev/null echo "Porta derrubada." read rm /dev/shm/$$* else echo -n -e "\n" fi else echo "Não encontrei o MAC solicitado." read fi } # Inicio do programa # Menu principal opcao=9 checa_arquivos while [ $opcao -ne 0 ] do echo -n -e "\n" echo "Total de equipamento cadastrados: "`wc -l $BASE/$DB | cut -d" " -f1` echo "Total de VLANS: "`cut -d":" -f2 $BASE/$DBVLANS | sort | uniq | wc -l` echo "Total de portas: "`wc -l $BASE/$DBPORTAS | cut -d" " -f1` echo "Total de portas em up : "`grep connect $BASE/$DBPORTAS | grep -v notconnect | wc -l` echo "Total de portas em down (sem cabo) : "`grep notconnect $BASE/$DBPORTAS | wc -l` echo "Total de portas inativas (sem configuração) : "`grep inactive $BASE/$DBPORTAS | wc -l` echo "Total de portas desabilitadas (shutdown) : "`grep disabled $BASE/$DBPORTAS | grep -v err-disabled | wc -l` echo "Total de portas com erro : "`grep err-disabled $BASE/$DBPORTAS | wc -l` echo "Total de portas em trunk : "`grep trunk $BASE/$DBPORTAS | wc -l` echo "Total de portas de acesso : "`grep -v trunk $BASE/$DBPORTAS | wc -l` echo "Total de dispositivo : "`cut -d":" -f3 $BASE/$DBMAC | sort | uniq | wc -l` echo -n -e "\n" echo "1 - Incluir dispositivos" echo "2 - Excluir dispositivos" echo "3 - Listar dispositivos" echo "4 - Atualizar banco de dados" echo "5 - Consulta de mac-address" echo "6 - VLANS" echo "0 - Sair" echo -n -e "\n" echo -n "Digite a opção: " read opcao echo $opcao | grep -e [a-z] 2>/dev/null >/dev/null if [ $? -eq 0 ] then opcao=0 else case $opcao in 1) incluir ;; 2) excluir ;; 3) listar ;; 4) atualizar todos ;; 5) mac ;; 6) vlans ;; *) ;; esac fi done
Script de backup para fita DAT
Barra de Progresso com Shell Script
Tornando seu Ubuntu uma distro para testes de intrusão
Script de controle do Alfresco para RHEL / CentOS / Fedora
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Agora temos uma assistente virtual no fórum!!! (244)
Servidor said: 530 5.7.0 Must issue a STARTTLS command first (in r... (0)
Falta pacotes de suporte ao sistema de arquivos (Gerenciador de discos... (5)