Mostrar conexões de rede ativas
Publicado por José Lucas (última atualização em 17/03/2021)
[ Hits: 2.517 ]
Homepage: https://github.com/NIDObr
Olá, comecei a me aventurar na TCL/TK, estou gostando bastante, é uma linguagem poderosa e cheia de recursos. Este script é só um teste, ainda estou aprendendo esta linguagem.
Mostra conexões de rede ativas, local e remota com base no arquivo "/proc/net/tcp".
#!/usr/bin/tclsh
# Autor: MINEMAM
# 06/12/2020
# Sobre: Mostra as conexões de rede, usando como base o arquivo "/proc/net/tcp"
#------------Funçoes----------------
# Converte hexadecimal(little-edian) para decimal
proc hex_to_dec { hex } {
set cont 0
set hex_lista {}
# Reordena o valor hexadecimal(little-edian) para convertelo
while { $cont != [ string length $hex ] } {
set hex_conv [ string index $hex $cont ]
set par [ regexp {([02468])} $cont par_m ]
if { $par == 1} {
set indice [ expr $cont + 1 ]
set hex_lista [ linsert $hex_lista $indice $hex_conv ]
} else {
set indice [ expr $cont - 1 ]
set hex_lista [ linsert $hex_lista $indice $hex_conv ]
}
incr cont
}
# Inverte a ordem da lista
set cont 7
set indice 0
set dec_lista {}
while { $cont != -1 } {
set var_atu [ lindex $hex_lista $cont ]
set dec_lista [ linsert $dec_lista $indice $var_atu ]
incr cont -1
incr indice
}
# Converte hexadecimal para decimal usando o "expr 0x"
if { [ string length $hex ] == 8 } {
set dec1 [ expr 0x[ lindex $dec_lista 0 ][ lindex $dec_lista 1 ] ]
set dec2 [ expr 0x[ lindex $dec_lista 2 ][ lindex $dec_lista 3 ] ]
set dec3 [ expr 0x[ lindex $dec_lista 4 ][ lindex $dec_lista 5 ] ]
set dec4 [ expr 0x[ lindex $dec_lista 6 ][ lindex $dec_lista 7 ] ]
set resultado "$dec1.$dec2.$dec3.$dec4"
} else {
set dec3 [ expr 0x[ lindex $dec_lista 4 ][ lindex $dec_lista 5 ] ]
set resultado "$dec3"
}
return $resultado
}
#------------Inicio-----------------
# Verifica se o arquivo existe
if { [ file exists /proc/net/tcp ] } {
set tcp_file [ open /proc/net/tcp r ]
} else {
puts "Arquivo não existe!"
exit
}
set cont 0
while { ! [ eof $tcp_file ] } {
if { $cont == 0 } {
set tcp_linha [ gets $tcp_file ]
puts "Conexão Local: Conexão Remota:"
} else {
set tcp_linha [ gets $tcp_file ]
if { $tcp_linha == "" } {
break
}
# IP:PORTA DE ORIGEM
set hex_orig [ lindex $tcp_linha 1 ]
set hex_ip_o [ string range $hex_orig 0 7 ]
set hex_port_o [ string range $hex_orig 9 12 ]
set ip_local [ hex_to_dec $hex_ip_o ]
set porta_local [ hex_to_dec $hex_port_o ]
# IP:PORTA DE DESTINO
set hex_dest [ lindex $tcp_linha 2 ]
set hex_ip_d [ string range $hex_dest 0 7 ]
set hex_port_d [ string range $hex_dest 9 12 ]
set ip_dest [ hex_to_dec $hex_ip_d ]
set porta_dest [ hex_to_dec $hex_port_d ]
puts "$ip_local:$porta_local $ip_dest:$porta_dest"
}
incr cont
}
close $tcp_file
Servidor web pequeno e simples em TCL
Gentoo: detectando impressoras de rede e como fixar uma impressora por IP
Como o GNOME conseguiu o feito de ser preterido por outras interfaces gráficas
Gentoo binário em 2026: UEFI, LUKS, Btrfs e Systemd
Trabalhando Nativamente com Logs no Linux
Jogando Daikatana (Steam) com Patch 1.3 via Luxtorpeda no Linux
Por que sua empresa precisa de uma PKI (e como automatizar EMISSÕES de certificados via Web API)
Instalando NoMachine no Gentoo com Systemd (acesso Remoto em LAN)
Gentoo: Trocando wpa_supplicant pelo iwd no NetworkManager (Systemd)
O que houve com slackware ??? (12)
Alterar conteúdo de dica [RESOLVIDO] (3)
Vou destruir sua infância:) (5)









