if ping -c 4 -q ya.ru | head -c 30 | awk '{print $3}' && echo Интернет есть `date +"%b %d %T"` || echo Нет Интернета `date +"%b %d %T"`; then ping -c 4 85.26.152.164; fi
... то условие будет выполняться всегда. Во-первых, в пайпе код возвращает не первая команда, а последняя, и авк тут отработает всегда успешно. Во-вторых, у вас в условии стоит "|| всегда_успешная_команда". В-третьих, вы пытаетесь второй пинг выполнять в случае успеха, что противоречит условию задачи.
Правильнее так:
if ping -c 4 -q ya.ru | head -c 30 | awk '{print $3}' | grep . ; then echo Интернет есть `date +"%b %d %T"`; else echo Нет Интернета `date +"%b %d %T"`; ping -c 4 85.26.152.164; fi
#!/bin/sh
while true; do ping -c 1 -q 85.26.152.164; sleep 30; done &
?
Или тут принцпиально пинговать, только если инет отвалился?
И да, обратитесь к провайдеру. Хотя, впрочем это мобильный инет от мегафона, насколько я понимаю. Вряд ли они чем помогут (: