я тут поигрался с командой вывода инфы адресов и интерфейсов
умучал чатик гпт, но он таки тупит и не может написать код, какой сам предложил, а именно, чтобы ип адреса выводились друг под другом, если на одном интерфейсе их будет несколько, но чтобы мак выводился в первой строчке
я в этих ваших башах ничего не понимаю, поэтому если тут есть спецы - допишите
он еще стал использовать printf, но там что-то какие-то ошибки лезут
root@docker:~# source ./.bashrc Интерфейс Статус IP-адреса MAC -bash: printf: --: invalid option printf: usage: printf [-v var] format [arguments] -bash: ./.bashrc: line 25: syntax error near unexpected token (' -bash: ./.bashrc: line 25: ipa() {'
даю рабочий код без принтф
alias ipa='
# Заголовок
echo -e "\033[1;36mИнтерфейс \033[1;37mСтатус \033[1;32mIP-адреса \033[1;33mMAC\033[0m"
echo "-----------------------------------------------------------------------"
ip -br a | grep -v "^lo" | while read -r iface state rest; do
# Собираем все IP-адреса (игнорируем metric)
ips=$(echo "$rest" | grep -oE "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/[0-9]+" | tr "\n" "," | sed "s/,$//")
# Получаем MAC
mac=$(ip -br link | grep -w "$iface" | awk "{print \$3}")
# Цвет для статуса: UP зеленый, DOWN красный
if [ "$state" = "UP" ]; then
color_state="\033[1;32m$state\033[0m"
else
color_state="\033[1;31m$state\033[0m"
fi
# Используем табуляции для точного выравнивания колонок
printf "\033[1;36m%s\033[0m\t%-6b\t\033[1;32m%-25s\033[0m\t\033[1;33m%s\033[0m\n" "$iface" "$color_state" "$ips" "$mac"
done'
может быть можно взять вывод в формате json и написать как-то более цивильней?

