wifi auto re-nection

Поскольку вы не указали, а также для пользы других читателей, я опишу, что делать, используя syslog-ng и rsyslog, чтобы сервер одновременно вел логи на два удаленных сервера syslog.

Если у вас syslog-ng ведет логи на центральный сервер syslog, измените /etc/syslog-ng.conf

Как пример:

source s_src { unix-dgram("/dev/log"); internal();
         file("/proc/kmsg" program_override("kernel"));
};

destination d_loghost {udp("10.10.1.1" port(514));};
log { source(s_src); destination(d_loghost); };

Чтобы вести логи на второй пункт назначения, добавьте:

destination d_loghost2 {udp("10.10.1.2" port(514));};
log { source(s_src); destination(d_loghost2); };

Если используется rsyslog, то на самом деле все проще. Конфигурационный файл - /etc/rsyslog.conf

Где вы находите пункт назначения:

*.* @10.10.1.1:514

вы добавляете второй пункт назначения:

*.* @10.10.1.2:514

После изменения конфигурации, демоны syslog на стороне клиента должны быть перезапущены. Это будет, соответственно,

sudo service syslog-ng restart

или

sudo service rsyslog restart

Поскольку демон syslog отправляет все сообщения во все настроенные пункты назначения, если вы явно не отфильтруете службы или уровни журналов, вам не нужно настраивать что-либо еще [на стороне клиента]. Оба будут получать одинаковые журналы.

1
18.07.2018, 21:50
1 ответ

Я думаю, что это ближе к тому, что вы хотите, но определенно может быть улучшено дальше:

while :; do
    if ! ping -c1 google.com >/dev/null 2>&1; then
        echo "no ping,will reset" 
        #counter of bad pings here
        count=1             
        while [ "$count" -lt 30 ]; do
            echo "$count"
            # insert here: retest for good ping
            nmcli networking off 
            sleep 5 
            nmcli networking on
            if ! ping -c1 google.com >/dev/null 2>&1; then
                echo "still offline for $count x @ $(date)" 
            else 
                #echo "reconnected at $(date)" 
                echo "ON"
                break
            fi
            ((count++))
            sleep 1
        done
    else
        echo "ONLINE"
        sleep 1
        clear
    fi
done
1
27.01.2020, 23:43

Теги

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