Перезагрузка, когда никакое сетевое соединение не работает!

Я думаю, вам может потребоваться загрузить установочный образ большего размера, он идет с большим количеством вещей, я думаю, я знаю, что это правда в отношении Linux, но не уверен в FreeBSD. Но я не думаю, что это имеет какое-то отношение к Интернету. Я бы сказал что-то не так с экстрактором файлов. Попробуйте получить pkg из портов, если он есть.

1
19.08.2014, 02:20
1 ответ

Я думаю, проблема связана с вашим оператором if .

если! ping -q -w 1 -c 1 $ (ip r | grep default | cut -d '' -f 3)

Более конкретно:

ping -q -w 1 -c 1 $ (ip r | grep default | cut -d '' -f 3)

Хост ip передан неправильно.

Обратите внимание, что каждая часть работает сама по себе (т.е. ping host и ip r .... ).

Это сработало для меня:

$ ip r | grep "default" | cut -d ' ' -3 | xargs ping -q -w 1 -c 1

Попытайтесь включить это в свои if операторы. xargs берет выходные данные из предыдущих каналов и использует их для ping , тогда как ранее ip не передавался половине кода ping . Попробуйте это в командной строке :-)

Изменено на netstat , а не на ip r , который также работает с Pi, но является достаточно общим для использования на других дисках Linux.

Сценарий ниже:

Он правильно получает имя хоста для проверки связи и вводит оператор (ы) в случае 0 (ввод, т.е. когда устройство отключено).

Также реструктурирован оператор if с помощью скобок [] и назначена переменная для оператора очистки.

#!/bin/bash

test_host=`netstat -nr | grep "UG" | awk '{ print $2}' | xargs ping -q -w 1 -c 1 | grep "received" | awk '{ print $4 }'`
if [ "$test_host" == "0" ] || [ -z "$test_host" ] ;
then
    echo "service networking restart"

    sleep 60
    test_host=`netstat -nr | grep "UG" | awk '{ print $2}' | xargs ping -q -w 1 -c 1 | grep "received" | awk '{ print $4 }'`
    if [ "$test_host" == "0" ] || [ -z "$test_host" ] ;
    then
            echo "reboot"
    fi
fi
1
27.01.2020, 23:52

Теги

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