Я предлагаю несколько изменений, которые могут помочь. Во-первых, отключите энергосбережение в 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
Вы можете использовать второе условие, которое использует некоторую переменную (или файл) в качестве флага (или счетчика).
Например, чтобы использовать файл как флаг, вы можете изменить свой сценарий таким образом:
#!/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, где пользователь, выполняющий сценарий, имеет права на запись.
Вы можете использовать второе условие, которое использует некоторую переменную (или файл) в качестве флага (или счетчика).
Например, чтобы использовать файл как флаг, вы можете изменить свой сценарий таким образом:
#!/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, где пользователь, выполняющий сценарий, имеет права на запись.
Вы можете использовать второе условие, которое использует некоторую переменную (или файл) в качестве флага (или счетчика).
Например, чтобы использовать файл как флаг, вы можете изменить свой сценарий таким образом:
#!/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, где пользователь, выполняющий сценарий, имеет права на запись.