50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
"github.com/charmbracelet/lipgloss"
|
|
)
|
|
|
|
func main() {
|
|
// Define styles
|
|
headerStyle := lipgloss.NewStyle().Bold(true).Foreground(lipgloss.Color("63"))
|
|
ipStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("203"))
|
|
upStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("42"))
|
|
downStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("196"))
|
|
addrStyle := lipgloss.NewStyle().Faint(true)
|
|
|
|
interfaces, err := net.Interfaces()
|
|
if err != nil {
|
|
fmt.Println("Error:", err)
|
|
return
|
|
}
|
|
|
|
for _, iface := range interfaces {
|
|
state := downStyle.Render("DOWN")
|
|
if iface.Flags&net.FlagUp != 0 {
|
|
state = upStyle.Render("UP")
|
|
}
|
|
|
|
fmt.Print(headerStyle.Render(iface.Name), " ")
|
|
fmt.Printf(addrStyle.Render(" %s"), iface.HardwareAddr)
|
|
fmt.Printf(addrStyle.Render(" %d"), iface.MTU)
|
|
fmt.Printf(" %s\n", state)
|
|
|
|
addrs, err := iface.Addrs()
|
|
if err != nil {
|
|
fmt.Println(" Error getting addresses:", err)
|
|
continue
|
|
}
|
|
|
|
for _, addr := range addrs {
|
|
ipNet, ok := addr.(*net.IPNet)
|
|
if !ok || ipNet.IP.To4() == nil {
|
|
continue // Skip if not an IPv4 address
|
|
}
|
|
fmt.Println(" ", ipStyle.Render(addr.String()))
|
|
}
|
|
fmt.Println()
|
|
}
|
|
}
|