Я разрабатываю сценарий оболочки bash. Он имеет множество функций, и один из них - определить, находится ли сетевая карта в режиме мониторинга. Не уверен, есть ли для этого метод «pro». Мой рудиментарный метод работает, но имеет проблему. Является следующей функцией:Проблемы с stdout
function monitor() {
WIFI="wlan0" #hardcoded wlan0 for the example
mode=`iwconfig $WIFI|cut -d ' ' -f 6`
if [[ $mode == "Mode:Monitor" ]]; then
echo "Your interface $WIFI is in monitor mode already"
return
fi
#Here is the rest of the function... not relevant
}
Проблема заключается в том, что на экране выводится сообщение о начале команды, и я не хочу ничего напечатать на экране. Таким образом, сначала я подумал, чтобы перенаправить стандартный вывод в/DEV/нуль делает это:
mode=`iwconfig $WIFI|cut -d ' ' -f 6 > /dev/null 2>&1`
Но если я могу это сделать, это перестать работать ... Я думаю, потому что он нуждается в стандартный вывод в трубу одной команды другой для работы.
Если я выбираю карту с монитором уже, все в порядке. Проблема в том, что сетевой интерфейс не находится в режиме мониторинга (например, eth0), он печатает это:
eth0 нет беспроводных расширений.
Что я могу сделать, чтобы использовать stdout для трубы и предотвратить печать чего-либо на экране?
Заранее спасибо.
Cheers.
стандартных вывод 'iwconfig' не собираются ваш TTY, но STDERR есть. Попробуйте 'mode = $ (iwconfig 2>/dev/null $ WIFI | cut -d '' -f 6)' –