Странная escape-последовательность

Мой вопрос: Почему для компьютера на 172.16.2.0/24 подсети возможно проверить с помощью ping-запросов 172.16.1.1 (IP-адрес интерфейса eth1)?

Поскольку Вы позволили его, и Linux делает это по умолчанию.

Linux использует то, что называют слабой моделью хоста. Это означает, когда это получает пакет, прибывающий из eth2, это будет полагать, что пакет для него, если адрес назначения будет IP-адресом какого-либо из его интерфейсов, не только eth2. Даже если передача отключена.

Так, чтобы пакет ввел рычаг PREROUTING, ядро затем видят, что адрес назначения - так возобновите ВХОДНОЙ рычаг, и Вы принимаете весь ICMP от eth2, таким образом, пакет принят.

2
17.11.2018, 03:17
2 ответа

Примечание: Это - поскольку я понимаю вещи, таким образом, это могло бы быть немного прочь!

Символы ^ [обычно показывают саму Клавишу выхода. Это - Управление (^) + открытая квадратная скобка ([).

выборка от Символов ESC - символ ESC ASCII

Символ "Escape" ASCII (восьмеричный: \033, шестнадцатеричный: \x1B или ^ [или, в десятичном числе, 27), используется во многих устройствах вывода для запуска серии символов, названных управляющей последовательностью или escape-последовательностью. Как правило, символ ESC был отправлен сначала в такой последовательности, чтобы предупредить устройство, что следующие символы должны были быть интерпретированы как управляющая последовательность, а не как простые символы, затем один или несколько символов будут следовать для определения некоторого подробного действия, после которого устройство вернулось бы к интерпретации символов обычно. Например, последовательность ^ [сопровождаемый печатаемыми символами [2; 10-й, заставил бы терминал DEC VT102 перемещать свой курсор в 10-ю ячейку 2-й строки экрана. Это было позже разработано к управляющим кодам ANSI, охваченным стандартом ANSI X3.64. Символ ESC также запускает каждую последовательность команды на Командном языке Принтера Hewlett Packard.

В системах, где Вы используете UTF-8, эта escape-последовательность является на самом деле 2 символами, таким образом, это теперь ^ [сопровождается дополнительным [.

выборка из управляющего кода ANSI - Элементы Последовательности

Существует отдельный символ CSI (155/0x9B/0233) также. ESC + [две последовательности символов чаще используются, чем односимвольная альтернатива, поскольку детали видят C0 и коды управления C1. Только две последовательности символов распознаны устройствами, которые поддерживают просто ASCII (7-разрядные байты) или устройства, которые поддерживают 8-разрядные байты, но используют 0x80–0x9F диапазон управляющего символа для других целей. На терминалах, которые используют кодировку UTF-8, обе формы берут 2 байта (CSI в UTF-8 является 0xC2, 0x9B) [обсуждают], но ESC + [последовательность более ясен.

Знание вышеупомянутых 2 сведений, это сделало бы escape-последовательность Esc + [+ D, который удается, чтобы быть, большое удивление, символ возврата.

выборка от Escape-последовательностей ANSI

Esc[ValueD     Cursor Backward: Moves the cursor back by the specified 
               number of columns without changing lines. If the cursor is 
               already in the leftmost column, ANSI.SYS ignores this 
               sequence.

Ссылки

6
27.01.2020, 21:52
  • 1
    ! Теперь я вижу. Это было странно для меня, потому что я не знал о ^ [[, escape-последовательность UTF-8. –  Pavel 06.01.2014, 05:26
  • 2
    , который я узнал, как генерировать последовательность на консольном экране. Нажатие "cursor left" дает нам последовательность. –  Pavel 06.01.2014, 23:28
  • 3
    @Pavel - таким образом, курсор назад в конце моего ответа корректен, и теперь мы знаем, как это становится сгенерированным. Тот ключ, вероятно, отображается для отправки "курсора назад" последовательность. Отображение может произойти во многих местах, таким образом, это не могло бы стоить исследовать далее. Это мог быть набор через stty или setterm среди нескольких других мест. –  slm♦ 06.01.2014, 23:40
  • 4
    @Pavel - отметьте этот ответ, как принято, если Вы чувствуете, что он решил Ваш вопрос. Это позволит другим знать, что Ваш вопрос был решен так, они не попытаются продолжить помощь дальше. –  slm♦ 09.01.2014, 00:53

Это походит на плохую вставку копии в сценарий профиля оболочки.

Как @slm обозначенный,' ^[ + [ 'обычная escape-последовательность, но Вы говорите, что имеете'^[ + [ + ['. Когда я просматриваю управляющие коды своего эмулятора терминала, я не вижу кодов, которые являются ESC, сопровождаемым 2 скобками.

Так как ESC является непечатаемым символом, он часто представлен в текстовых редакторах как ^[. Я предполагаю, что кто-то редактировал сценарий профиля, который имел этот управляющий код и пытался скопировать/вставить он на другую систему. Но они скопировали визуальное представление ESC (^[) вместо самого ESC.
Однако это привело бы только к наблюдению ^[[D, нет ^[[[D. Для этого, возможно, скопировать/вставить был сделан путем ввода его вместо этого, и это - опечатка.

В любом случае, для фиксации этого необходимо будет найти сценарий профиля, который имеет это, и зафиксируйте его. При использовании удара попробуйте следующее:

fgrep -r '[[[' /etc/bashrc /etc/bashrc.d /etc/bash_profile /etc/profile /etc/profile.d ~/.profile ~/.bashrc ~/.bash_profile

После того как Вы нашли его, легко зафиксировать. В vi редактор, просто удалите ^[[ символы и в режиме вставки делают Ctrl + v затем ESC. Это вставит литеральный символ ESC.

1
27.01.2020, 21:52
  • 1
    Привет Patrick, Спасибо за Ваше мнение. У меня есть несколько снимков экрана с такими символами на нем. Это не было скопировать/вставить ошибка. И я могу воспроизвести этот символ теперь. Для этого я просто нажимаю на кнопке "cursor left" для получения ^ [[[D последовательность. –  Pavel 06.01.2014, 23:27

Теги

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