wpa _cli :интерактивная оболочка работает, отдельные команды не работают?

ping возвращает другой код выхода в зависимости от того, насколько он успешен. Существует несколько реализаций ping, которые могут вести себя немного по-разному, но цитируя одну из их справочных страниц

If ping does not receive any reply packets at all it will exit with code 1. If a packet count and deadline are both specified, and fewer than count packets are received by the time the deadline has arrived, it will also exit with code 1. On other error it exits with code 2. Otherwise it exits with code 0. This makes it possible to use the exit code to see if a host is alive or not.

Кроме 0 для успеха и отличного от -нуля для неудачи, ваш пинг может использовать другие значения; вы можете проверить с помощью echo $?после запуска.

Существуют и другие программы проверки связи (, например, fping), предназначенные для мониторинга.

Таким образом, вы можете сделать что-то простое,:

if ping -c 2 ldapeu.corp.XXXXX.com ; then
    echo up
else
    echo down
fi

(Вы можете использовать что-то вроде if ping … >/dev/null 2>/dev/null; then, чтобы избавиться от всех сообщений, которые печатает ping.)

1
11.05.2021, 11:47
1 ответ

Оболочка выполняет нечто, называемое разбиением слов (, о котором вы можете подробно прочитать ). Для большинства ситуаций (и для вашего здесь )это означает, что если вы хотите передать какой-либо небольшой набор специальных символов программе в командной строке, вы должны защитить их. Чтобы защитить их, вы должны либо поставить перед ними обратную косую черту (\), либо заключить рассматриваемый текст в кавычки.

Sidenote :Одинарные кавычки в каком-то смысле «надежнее», так как внутри нет символов, имеющих особое значение. Двойные кавычки позволяют некоторым символам сохранять свое особое значение внутри.

Как вы могли догадаться из названия «разделение слов», пробелы — это одна из вещей, которые вам необходимо защитить, когда вы хотите передать их программе. Но из приведенных выше правил цитирования должно быть очевидно, что также необходимо защищать кавычки и обратную косую черту.

Проблема в том, что wpa _cli ожидает (double? )SSID заключен в кавычки, но ваш носит "съеденный" оболочкой, потому что он не защищен. Теперь с wpa_cli set_network 0 ssid '"my ssid"'одинарные кавычки защищают двойные кавычки, а команда wpa _cli видит "my ssid"в качестве четвертого аргумента.

1
28.07.2021, 11:33

Теги

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