Сценарий оболочки, чтобы прекратить повторять одно и то же письмо, если уже однажды обнаружил ошибку и отправил

Я предлагаю несколько изменений, которые могут помочь. Во-первых, отключите энергосбережение в Network Manager. Из терминала:

sudo sed -i 's/3/2/' /etc/NetworkManager/conf.d/*

Затем перезапустите диспетчер сети:

sudo service network-manager restart

Затем я предлагаю вам настроить маршрутизатор на запрет перескакивания каналов, то есть использовать фиксированный канал , либо 1, 6, либо 11, а не автоматический выбор канала. Кроме того, убедитесь, что маршрутизатор не настроен только на использование N скоростей; auto B, G и N являются предпочтительными. После внесения этих изменений перезагрузите маршрутизатор.

Наконец, если ваш маршрутизатор имеет 2,4 и 5 ГГц, я предлагаю дать им разные имена, например zobi24 и zobi5. Это позволит вашему маршрутизатору и беспроводному устройству перескочить с одной полосы на другую.

Эксперимент, чтобы увидеть, какой сегмент более стабилен. Я подозреваю, что это будет zobi24

В отношении этого:

info: failed: mwifiex_is_network_compatible: wpa_ie = 0x0 wpa2_ie = 0x30 WEP = d WPA = d WPA2 = d EncMode = 0x0 privacy = 0x1

Я также рекомендую вам проверить настройки в маршрутизаторе. WPA2-AES является предпочтительным; не какой-либо WPA и WPA2 смешанный режим и, конечно, не TKIP.

EDIT: для черного списка внутреннего устройства, пожалуйста, откройте терминал и выполните:

sudo -i
echo "blacklist mwifiex_pcie"  >>  /etc/modprobe.d/blacklist.conf
modprobe -r mwifiex_pcie
exit

Чтобы отменить процесс, отредактируйте файл черного списка:

sudo nano /etc/modprobe.d/blacklist.conf

Прокомментируйте добавленную строку, поместив символ EDIT в начале строки следующим образом:

#blacklist mwifiex_pcie
[d17 ] Сохранить и закрыть текстовый редактор.

Наконец, некоторые из адаптеров USB, которые вы используете, фактически загружают два конфликтующих драйвера. Давайте сделаем черный список наименее эффективным из двух:

sudo -i
echo "blacklist rtl8192cu"  >>  /etc/modprobe.d/blacklist.conf
exit
1
задан 29 January 2018 в 21:46

3 ответа

Вы можете использовать второе условие, которое использует некоторую переменную (или файл) в качестве флага (или счетчика).

Например, чтобы использовать файл как флаг, вы можете изменить свой сценарий таким образом:

#!/bin/bash

FLAG_FILE="/tmp/flag_file_my_error_email_script"

if grep -iq 'error' "/path/to/log" && [ ! -f "${FLAG_FILE}" ]; then
        echo "error found" | mailx -s "error alert" email-id
        touch "$FLAG_FILE"
fi

Команда touch "$FLAG_FILE" создаст файл /tmp/flag_file_my_error_email_script, который используется как аргумент во втором условии [ ! -f "${FLAG_FILE}" ]. Читайте о условных выражениях Bash.

Если вы хотите отправить / получить определенное количество писем, а затем подавить функцию скрипта, вы можете добавить третье условие, в котором будет использоваться содержимое $FLAG_FILE как Читайте о условных выражениях Bash :

#!/bin/bash

FLAG_FILE="/tmp/flag_file_my_error_email_script"

if grep -iq 'error' "/path/to/log" && [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then
        echo "error found" | mailx -s "error alert" email-id
        touch "$FLAG_FILE"
        NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE"
fi

Обратите внимание, что && имеет смысл, если предыдущее условие возвращает true, а || означает, что предыдущее условие возвращает false .

Если вы хотите восстановить «нормальную» работу скрипта, вы должны удалить $FLAG_FILE. Этот файл будет автоматически удален при перезагрузке системы. Если вы хотите изменить это поведение, выберите каталог, отличный от /temp, где пользователь, выполняющий сценарий, имеет права на запись.

0
ответ дан 22 May 2018 в 15:14

Вы можете использовать второе условие, которое использует некоторую переменную (или файл) в качестве флага (или счетчика).

Например, чтобы использовать файл как флаг, вы можете изменить свой сценарий таким образом:

#!/bin/bash FLAG_FILE="/tmp/flag_file_my_error_email_script" if grep -iq 'error' "/path/to/log" && [ ! -f "${FLAG_FILE}" ]; then echo "error found" | mailx -s "error alert" email-id touch "$FLAG_FILE" fi

Команда touch "$FLAG_FILE" создаст файл /tmp/flag_file_my_error_email_script, который используется как аргумент во втором условии [ ! -f "${FLAG_FILE}" ]. Читайте о условных выражениях Bash.

Если вы хотите отправить / получить определенное количество писем, а затем подавить функцию скрипта, вы можете добавить третье условие, в котором будет использоваться содержимое $FLAG_FILE как Читайте о условных выражениях Bash :

#!/bin/bash FLAG_FILE="/tmp/flag_file_my_error_email_script" if grep -iq 'error' "/path/to/log" && [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then echo "error found" | mailx -s "error alert" email-id touch "$FLAG_FILE" NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE" fi

Обратите внимание, что && имеет смысл, если предыдущее условие возвращает true, а || означает, что предыдущее условие возвращает false .

Если вы хотите восстановить «нормальную» работу скрипта, вы должны удалить $FLAG_FILE. Этот файл будет автоматически удален при перезагрузке системы. Если вы хотите изменить это поведение, выберите каталог, отличный от /temp, где пользователь, выполняющий сценарий, имеет права на запись.

0
ответ дан 17 July 2018 в 21:58

Вы можете использовать второе условие, которое использует некоторую переменную (или файл) в качестве флага (или счетчика).

Например, чтобы использовать файл как флаг, вы можете изменить свой сценарий таким образом:

#!/bin/bash FLAG_FILE="/tmp/flag_file_my_error_email_script" if grep -iq 'error' "/path/to/log" && [ ! -f "${FLAG_FILE}" ]; then echo "error found" | mailx -s "error alert" email-id touch "$FLAG_FILE" fi

Команда touch "$FLAG_FILE" создаст файл /tmp/flag_file_my_error_email_script, который используется как аргумент во втором условии [ ! -f "${FLAG_FILE}" ]. Читайте о условных выражениях Bash.

Если вы хотите отправить / получить определенное количество писем, а затем подавить функцию скрипта, вы можете добавить третье условие, в котором будет использоваться содержимое $FLAG_FILE как Читайте о условных выражениях Bash :

#!/bin/bash FLAG_FILE="/tmp/flag_file_my_error_email_script" if grep -iq 'error' "/path/to/log" && [ ! -f "${FLAG_FILE}" ] || (( $(cat "$FLAG_FILE") < 2 )); then echo "error found" | mailx -s "error alert" email-id touch "$FLAG_FILE" NEW_VALUE=$(( $(cat "$FLAG_FILE") + 1)) && echo "$NEW_VALUE" > "$FLAG_FILE" fi

Обратите внимание, что && имеет смысл, если предыдущее условие возвращает true, а || означает, что предыдущее условие возвращает false .

Если вы хотите восстановить «нормальную» работу скрипта, вы должны удалить $FLAG_FILE. Этот файл будет автоматически удален при перезагрузке системы. Если вы хотите изменить это поведение, выберите каталог, отличный от /temp, где пользователь, выполняющий сценарий, имеет права на запись.

0
ответ дан 23 July 2018 в 22:35

Другие вопросы по тегам:

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