Кодировка символов Cisco по умолчанию на консоли
Вопрос
Какая кодировка символов по умолчанию используется большинством устройств Cisco при обмене данными через консоль?
Фон
Я разработчик программного обеспечения, пишу приложение, которое взаимодействует с несколькими устройствами Cisco через их консольные порты (в основном, оно запускает команды конфигурации IOS и реагирует на определенные отзывы - например, ошибки).
Мое программное обеспечение работает под Mac / Windows / Linux, и каждая ОС имеет свои собственные системы кодировки символов по умолчанию. Поэтому я должен быть очень осторожен при отправке байтов на консоль и при получении байтов с консоли. Если я не укажу правильную кодировку символов, все пойдет не так. Например, когда я "нажимаю return" после отправки команды, в некоторых системах она "нажимает return" дважды, а не один раз! Или, когда я получу данные и попытаюсь разобраться в них, программа будет сбита с толку неправильным преобразованием байтов / символов.
Резюме
Если я включаю новую (или только что сброшенную) Cisco 3845 или 2955 и подключаюсь через консоль и отправляю данные / байты / символы взад и вперед...
... какую кодировку будет использовать устройство по умолчанию. Я подозреваю, что это UTF-8.
3 ответа
Если это американская экипировка, я могу с уверенностью сказать, что она использует ASCII для обычного текста. Вероятно, он не будет выполнять какую-либо проверку набора символов, поэтому определяемые пользователем имена могут быть любым набором символов, если отдельные байты действительны для устройства. Если вы получаете бред от последовательного соединения, порт настроен неправильно. Когда я был моложе и фактически использовал последовательные порты на регулярной основе, я иногда мог распознать тип тарабарщины и определить, какая настройка была неправильной.
Что касается проблем с клавишей ввода, устройство будет использовать тот же символ для "ввода", если вы подключаетесь из окон (где новая строка \r\n
) или Unix (\n
) или макинтош (\r
), выберите тот, который работает правильно, и он должен всегда работать. В зависимости от того, как вы подключаетесь (напрямую к устройству с последовательным портом или получаете контроль над терминальным приложением?), Могут быть настройки типа "локальное эхо", которые заставляют печатать то, что вы печатаете, на вашем экране терминальным приложением (большинство эхосигналов) текст для вас, так что включение локального эха приведет к дублированию всех букв)
Нет ничего сложнее, чем просто старый ASCII. Я понимаю, что UTF-8 обратно совместим с этим, поэтому вы должны быть в порядке с ним.
Кроме того, я пошел по пути написания программ для управления и получения отчетов из различных ящиков Cisco, я начал использовать консольные соединения, но через довольно короткое время понял, что это действительно не долгосрочное решение, и вы закончите. использовать SNMP для чего-либо вообще сложного.
Основная причина этого заключается в том, что ответ от CLI не всегда согласован и почти наверняка изменится между выпусками IOS, вторая причина в том, что SNMP, хотя и выглядит сложным при первом просмотре, предназначен для получения информации из сети и изменения настроек, является стандартным и всегда будет давать последовательные результаты. Просто моя 10р стоит.
Отказ от ответственности: я не разработчик программного обеспечения =)
Помогает ли приведенный ниже документ вообще? В нем обсуждается "набор символов" в ряде областей, включая значения по умолчанию. Я не совсем уверен, что это то же самое, что и "кодировка символов", по крайней мере, в контексте, в котором вы спрашиваете.
http://www.cisco.com/en/US/docs/ios/12_1/configfun/command/reference/frd1003.html