зафиксировать время загрузки embedded ARM/MIPS

встраиваемые модели

Модераторы: Olej, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

зафиксировать время загрузки embedded ARM/MIPS

Непрочитанное сообщение Olej » 23 апр 2021, 11:34

Работаю с TV-боксами со встроенным Linux.
Доступ к ним:
- там где есть (зависит от модели) по RS-232... (это только й терминал, естественно)
- а там где нет - исключительно по SSH подключениям (а здесь - сколько угодно терминалов)

Там где нет RS-232 (а он больше, по существу, и не особенно нужен) чтобы подключиться по SSH нужно иметь IP коробки (особенно когда их несколько - это особенно весело).
Единственно уверенный способ - сканировать хосты своей LAN: сканирование хостов LAN: какой новый появился, тот и он... :lol:

Когда мне это надоело - сделал (в конфигурациях этих коробок) отключение DHCP и привязку их к статическим известным IP: "каждой сестре по серьгам". :lol:

Теперь стало лучше.... Но некоторая проблема в том, что время загрузки таких embedded устройств (с инициализацией всех фокусов) может быть значительным (до пары минут) ... и подключаясь к ним по SSH (на фиксированный IP) не знаешь: он ещё не загрузился? или сам в конфигурациях начудил и он теперь уже глухо не грузится? или он просто сгорел по электричеству? :-o
Сидишь и ждёшь "у моря погоды"... :-?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: зафиксировать время загрузки embedded ARM/MIPS

Непрочитанное сообщение Olej » 23 апр 2021, 11:36

Olej писал(а):
23 апр 2021, 11:34
Сидишь и ждёшь "у моря погоды"...
Можно посылать ping время от времени ... - как отклик прийдёт - значит уже очнулся.
Но надоело таким тупым тыком заниматься: сидишь и ping, ping, ping ...

Решил написать скрипт, который пингует до тех пор, пока IP не отзовётся.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: зафиксировать время загрузки embedded ARM/MIPS

Непрочитанное сообщение Olej » 23 апр 2021, 11:42

Olej писал(а):
23 апр 2021, 11:36
Решил написать скрипт, который пингует до тех пор, пока IP не отзовётся.
Может ещё кому пригодится...
Вот он:

Код: Выделить всё

olej@nvme:~/2021/OWN_TEST.codes/boot.time$ cat boot.time.sh 
if [[ $# -ne 1 ]]
then
   echo "error - usage: $0 <1-254>"
   exit 1
fi

IP="192.168.1."$1
IP_REG="(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"

if echo $IP | grep -E -o $IP_REG > /dev/null
then
   echo $IP
else
   echo illegal IP address: $IP
   exit 1
fi 

ITER=0
LIMIT=240 # лимит ожидания - 4 мин.
WAIT=1

until `ping -c1 -q $IP > /dev/null`
do
   WAIT=0
   sleep 1
   echo -n '.'
   let "ITER++"
   if [[ $ITER = $LIMIT ]]
   then
      echo
      echo no response in $SECONDS seconds
      exit 1
   fi
done

if [[ $WAIT -eq 0 ]]
then
   echo
fi
echo "$SECONDS seconds response received"
Вложения
boot.time.sh
(726 байт) 70 скачиваний

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: зафиксировать время загрузки embedded ARM/MIPS

Непрочитанное сообщение Olej » 23 апр 2021, 12:11

Olej писал(а):
23 апр 2021, 11:42
Вот он:
И выполнения:
- это загружается простенький MIPS:

Код: Выделить всё

olej@nvme:~/2021/OWN_TEST.codes/boot.time$ ./boot.time.sh 201
192.168.1.201
...
28 seconds response received
- а это :-o вопреки ожиданиям :-? - более навороченный ARM - 3 минуты:

Код: Выделить всё

olej@nvme:~/2021/OWN_TEST.codes/boot.time$ ./boot.time.sh 202
192.168.1.202
..................................................
211 seconds response received : x86_64-pc-linux-gnu
- а вот его перезагрузка, но "горячая" (по команде: # reboot")

Код: Выделить всё

olej@nvme:~/2021/OWN_TEST.codes/boot.time$ ./boot.time.sh 202
192.168.1.202
......
53 seconds response received
- это при обращении к активному (уже загруженному) хосту LAN:

Код: Выделить всё

olej@nvme:~/2021/OWN_TEST.codes/boot.time$ ./boot.time.sh 2
192.168.1.2
0 seconds response received : x86_64-pc-linux-gnu
- при обращении к несуществующему IP или мёртвому девайсу он повисит, повисит ... и завершится так:

Код: Выделить всё

olej@nvme:~/2021/OWN_TEST.codes/boot.time$ ./boot.time.sh 1
192.168.1.1
...
no response in 12 seconds
Время такого ожидания задаётся переменной:

Код: Выделить всё

LIMIT=240 # лимит ожидания - 4 мин.
В примере выше она была, естественно, сильно уменьшена для отладки...
При вводе ошибочного IP (то что не может быть IP) ошибка контролируется:

Код: Выделить всё

olej@nvme:~/2021/OWN_TEST.codes/boot.time$ ./boot.time.sh 256
illegal IP address: 192.168.1.256
Но этот контроль не на все 100% случаев жизни ... регулярное выражение (шаблон) IP - это "почти IP", на его детализации я не заморачивался...

Ответить

Вернуться в «Одноплатные компьютеры»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя