sshpass прекращает синтаксический анализ входных данных после 70 строк - PullRequest
0 голосов
/ 04 марта 2020

Я сделал сценарий bash для автоматического обновления группы объектов на Cisco ASA с IP-адресами office365 через S SH.

Я получаю IP-адреса от MS, собирая правильную команду- синтаксис для ASA и запись всех команд в файл (сейчас 90 строк, но, поскольку это динамически c, он может увеличиваться или уменьшаться). Затем я хочу передать sh команды из файла в ASA с помощью:

cat outfile.txt | sshpass -p "Password" ssh -t -oStrictHostKeyChecking=no foo@1.1.1.1

, но sshpass прекращает отправку команд после строки 70. поэтому в файле outfile.txt содержится 90 строк, но неважно, на каком хосте Я пытаюсь «развернуть» команды, он просто отправляет первые 70 строк. После этого я просто получаю

Connection to 1.1.1.1 closed by remote host.

На брандмауэре я вижу сброс TCP с сервера, но, как я уже сказал, не имеет значения, на каком хосте (пробовал разные брандмауэры, маршрутизаторы и другие серверы) я попытаться не отправить больше, чем первые 70 строк.

Кто-нибудь получил решение для моей проблемы или другой способ решить мою проблему?

Спасибо

1 Ответ

0 голосов
/ 04 марта 2020

Попробуйте, может быть, это не красиво, но должно работать. последнее сообщение от сервера также может быть «Соединение закрыто удаленным хостом», но все настройки должны быть уже добавлены правильно.

#!/bin/bash

where="<path to your outfile.txt>";
len=`cat $where | wc -l`;
config=`for (( c=1; c<=$len; c++ )) do line=\`sed -n "$c""p" $where\`; echo $line; done`;

sshpass -p "Password" ssh -t -oStrictHostKeyChecking=no foo@1.1.1.1 $config

Пожалуйста, рассмотрите также использование ключа s sh вместо sshpass.

...