plink.exe - установить количество строк в терминале? - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь извлечь информацию с коммутатора, используя plink. Проблема в том, что он продолжает пытаться вставить разрыв «нажми пробел, чтобы продолжить», который я не могу выключить. Я знаю, что этот разрыв вставляется в зависимости от количества строк в терминале; сессия ручной замазки изменяет количество прокручиваемых строк в зависимости от высоты окна. Как я могу изменить поведение plink для отображения достаточного количества строк для запросов, которые я выполняю, чтобы не вставлять разрывы?

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Лучшее решение, которое я нашел для этого, это отправить команды для извлечения из текстового файла, например так:

plink username@host -pw password < commands.txt

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

Для тех, кто заинтересован, так выглядит моя однострочная команда:

for /f "tokens=1,2,3,7" %A in ('plink user@host -pw pass ^< commands.txt') do @if %A equ +%A for /f "tokens=2 %E in ('plink user@host -pw pass "command using %C from first command"') do @if not %D == %E @echo %B %C %D %E >> outputfile.txt

Он извлекает список и фильтрует его, как описано выше, а затем использует каждую строку списка для запуска второй команды для сравнения определенного бита информации. Если обнаружено несоответствие, соответствующая информация удаляется в выходном файле.

Теперь, если бы я мог просто понять, как создавать переменные подсказки, которые я могу использовать встроенными. Windows 10 обрабатывает их по-разному, и они работают не так, как в предыдущих версиях.

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

0 голосов
/ 09 ноября 2018

Чтобы автоматизировать команды, вы должны запустить ваш SSH-клиент без эмуляции терминала. Таким образом, вам не придется сталкиваться с такими проблемами.

Plink (аналогично клиенту OpenSSH ssh) не использует эмуляцию терминала, когда вы указываете команду в командной строке Plink:

plink username@host less file.txt

Таким образом, команда less (и аналогичная) будет вести себя как простая cat, так как нет терминала.


Некоторые неясные SSH-серверы, например, те, которые работают на некоторых коммутаторах, не поддерживают канал exec SSH, используемый Plink для выполнения команды, указанной в его командной строке.

Если это ваш случай, вы, вероятно, передаете команду Plink, используя перенаправление ввода, например:

echo less file.txt | plink username@host 

В этом случае Plink использует эмуляцию терминала. Так что less будет разбивать на страницы вывод.

Чтобы остановить Plink от использования эмуляции терминала, используйте переключатель -T :

echo less file.txt | plink username@host -T
...