iproute2 tty buffers
проблема: Команда ip (a \ r \ не важно) ничего не возвращает в консоль. ifconfig работает без проблем.
C помощью strace было выяснено, что системные вызовы идут
...
write(1, "2898: veth3724fc8@if2897: <BROAD"..., 201) = 201
write(1, " inet6 fe80::ac85:47ff:fee8:6"..., 98) = 98
getgid() = 0
stat("/var/run/netns", 0x7fff9b06be70) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/var/run/netns", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = -1 ENOENT (No such file or directory)
write(1, "2527: vethc474d5f@if2526: <BROAD"..., 200) = 200
write(1, " inet6 fe80::d02b:3dff:fefc:2"..., 98) = 98
exit_group(0) = ?
+++ exited with 0 +++
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
но в терминал ничего не попадает, ошибок тоже нет никаких. Логически рассуждая пришли к проблемам с буферизацией консоли, что и подтвердилось переопределением буфера:
# stdbuf -oL ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
...
проблема носит массовый характер вне зависимости от ОС, версии ядра, утилит или хостера. Через виртуальную физическую консоль проблема тоже воспроизводится.
Есть хосты где под юзером всё работает, а под рутом именно ломается, причём sudo ip a
тоже не работает, что странно, т.к. окружение в этом случае не инициализируется.
Категорически не понятно что ломает консоль.
Достаточно много задач выполняется через ansible, но там нет никакого криминала на мой взгляд (создать юзера, прописать ключи…), всё достаточно тривиально.
ЧЯДНТ?