Тестируем интернет (linux android)

На самом деле это единственный раздел про unix на этом форуме

Модератор: /dev/random

froa
Сообщения: 12

Тестируем интернет

Сообщение froa » 15.03.2017 15:51

Привет,сталкиваюсь с проблемой ,отсутствует "интернет" при включенном интерфейсе мобильного интернета на смартфоне.
Единственное что спасает в такой ситуации - это перезагрузка смартфона . Перезагрузка интерфейса ничего не дает .
Хочется автоматизировать всю эту рутинную проверку. То есть при отсутствие интернета он должен перезагружаться .

Поставил себе задачу :

1.Перезагрузка смартфона и запуск скрипта
2.Отслеживание соединения интернета

Первую задачу можно решить с помощью init.d - автозагрузка скриптов после запуска системы или с помощью taskera - выставить событие после запуска системы - запуск скрипта (run shell)
Собственно извиняюсь за такое длинное предисловие но на втором пункте я застрял. Нужно решить это с помощью shell скрипта . Так как нужно встроить его в другой скрипт.
Пробовал с помощью команды ping .Пинговать то получаться но как составить условие для перезагрузки ?


Спасибо сказали:

Аватара пользователя
Vascom
Сообщения: 1494
ОС: Fedora 30

Re: Тестируем интернет

Сообщение Vascom » 15.03.2017 15:57

Примерно так:

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

ping -c 4 -q 8.8.8.8 &>/dev/null || <команда на перезагрузку>

То есть пингуем четыре раза DNS от гугла, если пинг не проходит, то выполняем перезагрузку.
Это можно проверять в цикле с периодичностью, задаваемой командой sleep, либо по крону (если он есть).
Спасибо сказали:

froa
Сообщения: 12

Re: Тестируем интернет

Сообщение froa » 15.03.2017 18:48

Vascom писал(а):
15.03.2017 15:57
Примерно так:

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

ping -c 4 -q 8.8.8.8 &>/dev/null || <команда на перезагрузку>

То есть пингуем четыре раза DNS от гугла, если пинг не проходит, то выполняем перезагрузку.
Это можно проверять в цикле с периодичностью, задаваемой командой sleep, либо по крону (если он есть).


Все отлично работает . Но вот у меня код в одну строчку не влезает(пишу на телефоне в skriptrunnet ) и команда перезагрузки выходит на новую строку и получается перезагрузка выполняется всегда .
Можно в код поправку внести, что бы читал как одну строку или все таки только остается записать в отдельный файл (скрипт) и вызывать его

Спасибо сказали:

NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Тестируем интернет

Сообщение NickLion » 15.03.2017 19:00

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

if ping ...
then
    echo ok
else
    echo no internet
fi
Спасибо сказали:

Аватара пользователя
Vascom
Сообщения: 1494
ОС: Fedora 30

Re: Тестируем интернет

Сообщение Vascom » 15.03.2017 19:23

Можно обратным слэшем экранировать перевод строки.

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

ping -c 4 -q 8.8.8.8 &>/dev/null || \
<команда на перезагрузку>
Спасибо сказали:

froa
Сообщения: 12

Re: Тестируем интернет

Сообщение froa » 17.03.2017 13:00

Написал скрипт простенький под android.Он проверяет значения mDataActivity . этот скрипт запускается как только запускаться Chrome

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

#!/system/bin/sh

su

b=mDataActivity=3

a=$(dumpsys telephony.registry | grep mDataActivity|  head -1)

if [ "$b" = "$a" ]
then
 echo " true "
else
echo "false"
echo $a # смотрим какое значение в переменной для  проверки
fi

У меня выходит false , даже когда $a = $b. В чем моя ошибка ?
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15823
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Тестируем интернет

Сообщение Bizdelnick » 17.03.2017 13:16

На первый взгляд ошибки нет. Возможно строки всё-таки различаются? Например в конце $a прицеплен возврат каретки.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

froa
Сообщения: 12

Re: Тестируем интернет

Сообщение froa » 17.03.2017 15:32

Bizdelnick писал(а):
17.03.2017 13:16
На первый взгляд ошибки нет. Возможно строки всё-таки различаются? Например в конце $a прицеплен возврат каретки.


Мой выбор был изначально не правильный ибо я сравнивал динамически получаемые строки. Для этого лучше подошел grep

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

if dumpsys telephony.registry | grep -q "mDataActivity=3"; then
  echo "true"
else
  echo "false"
fi
Спасибо сказали: