3

Я построил sshpass на Cygwin. Он отлично работает из окна терминала Cygwin:

sshpass -p password ssh -o StrictHostKeyChecking=no user@host

Однако та же самая команда из командной строки Windows не выводит.

Я попробовал неинтерактивную команду, чтобы увидеть, сработало ли это, но это не сработало:

sshpass -p password ssh -o StrictHostKeyChecking=no user@host ls

Оба прекрасно работают из среды Cygwin, но не из командной строки Windows. Они работают из командной строки Windows, но выходных данных нет. Я знаю это, потому что я могу выдавать команды из окна cmd.exe и видеть эффекты на удаленном хосте. Кроме того, обычный ssh (Cygwin) прекрасно работает из командной строки Windows.

Как я могу получить вывод из sshpass при использовании в командной строке Windows?

1 ответ1

2

Причина, по которой это не работает, заключается в несовместимости перенаправления stdin/stdout между cygwin и нативными программами Win32, но существует программа-обертка, называемая cygnative которая решает проблему. Это позволяет использовать желаемую командную строку следующим образом:

C:> cygnative sshpass -p password ssh -o StrictHostKeyChecking=no user@host ls

(это работает для неинтерактивных команд, но не для интерактивных терминальных сессий)

Ссылки автора на cygnative.exe , но он доступен как источник C в этом разделе или как источник и исполняемый файл в этом zip.


Я обнаружил это решение, пытаясь решить другую проблему, на этот раз пытаясь использовать rsync поверх программы plink PuTTY. Я получил ошибку:

Unable to read from standard input: The parameter is incorrect.

что привело меня к обнаружению cygnative , но отследить его было сложно из-за мертвых исходных ссылок.

Проблема описана здесь и представляет решение cygnative , здесь , с обновленной версией 1.2 здесь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .