Автоматическое добавление точек доступа в linux debian

Ctrl + 4 отправляет ^ \

Терминалы отправляют символы (или, точнее, байты), а не ключи. Когда нажата клавиша, представляющая печатный символ, терминал отправляет этот символ в приложение. Большинство функциональных клавиш закодированы как escape-последовательности: последовательности символов, которые начинаются с номера символа 27. Некоторые сочетания клавиш в форме Ctrl + символ и несколько функциональных клавиш отправляются как управляющие символы - в наборе символов ASCII , который все современные компьютеры используют в качестве основы (Unicode, ISO Latin- n и т. д. - все надмножества ASCII), 33 символа являются управляющие символы: символы с номерами от 0 до 31 и 127.Управляющие символы не печатаются, но предназначены для использования в приложениях; например, символ 10, который является Control-J (обычно пишется ^ J), является символом новой строки, поэтому, когда терминал отображает этот символ, он перемещает курсор на следующую строку, а не отображает глиф. Сам escape-символ является управляющим символом ^ [(значение 27).

Не хватает управляющих символов, чтобы покрыть все сочетания клавиш Ctrl + символ . Только буквы и символы @ [\] ^ _? имеют соответствующий управляющий символ. Когда вы нажимаете Ctrl + 4 или Ctrl + $ (как я полагаю, это Ctrl + ) Shift + 4 ), терминал должен выбрать что-то для отправки. В зависимости от терминала и его конфигурации существует несколько общих возможностей:

  • Терминал игнорирует модификатор Ctrl и отправляет символ 4 или $ .
  • Терминал отправляет escape-последовательность, которая кодирует точную клавишу и модификаторы, которые были нажаты.
  • Терминал отправляет другой управляющий символ.

Многие терминалы отправляют управляющие символы для некоторых клавиш в ряду цифр:

  • Ctrl + 2 → ^ @
  • Ctrl + 3 → ^ [
  • Ctrl + 4 → ^ \
  • Ctrl + 5 → ^]
  • Ctrl + 6 → ^^
  • Ctrl + 7 → ^ _
  • Ctrl + 8 → ^?

Я не знаю где возникла эта конкретная конвенция.

Ctrl + | отправляет тот же символ, потому что это Ctrl + Shift + \ , а терминал отправляет ^ \ была ли нажата клавиша Shift или нет.

^ \ quits

Сам терминал (точнее, общая поддержка терминала в ядре) интерпретирует несколько управляющих символов специально. Эта интерпретация может быть настроена для сопоставления различных символов или отключена приложениями, которые хотят обрабатывать символы самостоятельно. Одна хорошо известная такая интерпретация заключается в том, что ^ M, символ, отправляемый клавишей Return , отправляет текущую строку в приложение, если терминал находится в режиме готовой , в котором приложения получать ввод построчно.

Несколько символов отправляют сигналы приложению на переднем плане. ^ C отправляет сигнал прерывания (SIGINT), который обычно сообщает приложению прекратить то, что оно делает, и прочитать следующую команду пользователя. Неинтерактивные приложения обычно закрываются.^ \ отправляет сигнал выхода (SIGQUIT), который обычно сообщает приложению о том, что нужно как можно скорее выйти, ничего не сохраняя; многие приложения не отменяют поведение по умолчанию, которое заключается в немедленном прекращении работы приложения¹. Поэтому, когда вы нажимаете Ctrl + 4 (или что-нибудь, что отправляет символ ^ \) в cat или bc , ни один из них не отменяет поведение по умолчанию, приложение убито.

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

Оболочки обрабатывают все общие сигналы, поэтому, если вы наберете ^ \ в оболочке, вы не прервете сеанс, вы просто получите новое приглашение, такое же, как ^ C.

Вы можете поиграть с настройками терминала с помощью команды stty .

¹ И традиционно генерирует дамп ядра , но многие системы в настоящее время отключают это по умолчанию.

-6
24.11.2018, 21:45
1 ответ

Предполагая, что у вас есть настроенные ключи root ssh и локально сгенерированные шаблоны, stat с этим;

for HOST in $HOSTS ; do
    scp wifi-templates/* $HOST:/etc/NetworkManager/system-connections/
    ssh $HOST 'U=$(ls -1 /home/ | head -n 1); perl -pi -e "s/(permissions=user:)you(:;)/$1'$U'$2/g" /etc/NetworkManager/system-connections/*'
done

Шаблоны;

while read L ; do
    SSID=$(echo $L | cut -d ";" -f 1)
       N=$(echo $L | cut -d ";" -f 2)
    PASS=$(echo $L | cut -d ";" -f 3)
    cp template $N
    perl -pe 's/SSID/'$SSID'/g;s/PASS/'$PASS'/g' $N
done < AP.txt

*Этот код предназначен только для демонстрации. (Не тестировался и может потребовать настройки, чтобы он работал. )Пожалуйста, прочтите справочную страницу каждой команды перед использованием;

0
28.01.2020, 05:21

Теги

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