Bash: определение правильности настройки битрейта CANbus

Я работаю над встроенным сценарием bash для Linux (4.1.15), в котором битрейт CANbus может быть одним из нескольких возможных. Когда мой модуль подключается к сети, он появляется на первом битрейте в списке, проверяет трафик и, если трафика нет, циклически переключает каждый битрейт таким же образом, пока трафик не будет обнаружен.

Мой первоначальный подход состоял в том, чтобы сделать что-то вроде timeout -t 1 output=$(candump can0). Если вывод пустой, то битрейт неверный. Однако функция timeout, по-видимому, не вызывает возврата из команды.

Мой второй подход состоял в том, чтобы попытаться сделать что-то с ip -details -statistics link show can0. Хотя это и дает некоторую значимую информацию в одной дискретной команде, это не очень полезно, если нет возможности сбросить статистику.

Команда uname -rmsдает следующую информацию о версии системы: Linux 4.1.15 armv7l

Если кто-нибудь знает, как заставить любой из этих подходов работать, это будет отлично, или если вы знаете другой способ, я весь в ушах. Суть в том, что мне нужно найти способ сделать это с помощью скрипта bash.

3
16.06.2020, 16:07
1 ответ

( Моя команда тайм-аута не использует -t, но, кажется, есть разные версии ). Поместив часть тайм-аута внутри $(), он должен иметь возможность сигнализировать команду canbus, и, по крайней мере, присваивание outputвсегда должно создавать переменную.

output=$(timeout -t 1 candump can0)
2
18.03.2021, 23:27

Теги

Похожие вопросы