Способ, которым я это сделал, - создать файл командного сценария и передать его в командной строке с помощью команды / b в psftp.exe. Я также попробовал это в Perl и до сих пор не нашел более аккуратный способ сделать это.
Существует проблема с этим методом, в которой вы уже должны были принять отпечаток пальца RSA. Если нет, то сценарий либо будет ожидать ввода данных пользователем, чтобы принять его, либо пропустит его, если вы работаете в полном пакетном режиме с ошибкой. Кроме того, если сервер изменяется так, что меняется отпечаток пальца RSA (например, кластер), вам необходимо повторно принять отпечаток пальца снова.
Не идеальный метод, но единственный, который я знаю.
Я буду наблюдать за этим вопросом, если кто-нибудь знает другой путь.