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