Автоматизировать отправку файлов через sftp с помощью copssh

Каждый месяц мы отправляем отчеты на сервер по FTP. Мы запускаем запрос к базе данных для создания файлов, а затем используем функцию ftp в LabVIEW для выполнения передачи. Это работает в системе Windows.

Это работает нормально, но теперь мы должны перейти на использование SFTP, и пакет CopSSH был рекомендован. Поскольку LabVIEW не имеет встроенной функции SFTP, мы рассмотрим, как мы можем использовать приложение sftp.exe из CopSSH.

Из командной строки мы настроили шифрование и установили начальное соединение, используя sftp username@host и ввел пароль. Это было подтверждено командой на стороне сервера, поэтому подключение к серверу установлено. Теперь мы просто используем sftp username@host и пароль не требуется.

Мы боремся за то, как начать передачу из нашего кода LabVIEW. Мы можем вызывать системные команды, используя System Exec VI, но есть ли способ передать список функций SFTP исполняемый файл?

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

sftp username@host
put c:/Data/File1.txt remoteFile1
put c:/Data/File2.txt remoteFile2
put c:/Data/File3.txt remoteFile3
quit

Это работает из командной строки, но я хочу просто вызвать исполняемый файл sftp со списком файлов для передачи. Я не думаю, что это будет характерно для LabVIEW, так как вы можете использовать пакетный файл для запуска из запланированного задания.

LabVIEW может вызывать ActiveX и.net, но нам действительно нужно использовать это конкретное приложение.

3 ответа

Решение

Если copssh sftp.exe является утилитой командной строки, а System Exec в вашей версии LabVIEW имеет терминал 'стандартного ввода' (присутствует по крайней мере начиная с 8.5), вы можете просто подключить команды, которые вы хотите запустить sftp.exe в стандартный входной терминал.

Если по какой-то причине это не сработает, не могли бы вы использовать PuTTY вместо copssh? В документации к компоненту PuTTY PSFTP говорится, что он может выполнять последовательность команд в файле сценария с помощью ключа командной строки -b, например

psftp user@hostname -b myscript.scr

чтобы ваша программа LabVIEW могла создать файл сценария, а затем запустить его с помощью System Exec.

Я использую WinSCP с версией командной строки, winscp.com. Он поддерживает sftp и позволяет синхронизировать, сохранять обновления, получать, помещать и удалять папки и файлы. Одним словом предупреждения, keepuptodate зависит от непрерывного соединения. Хотя WinSCP может автоматически восстановить соединение, keepuptodate не может. Я подозреваю, что он основан на.NET SystemIO FileSystemWatcher от Microsoft. Поэтому я регулярно выполняю синхронизацию, чтобы сохранить зеркальное отображение дерева исходных папок на удаленной цели.

Вы смешиваете SSH и SFTP. SSH открывает безопасное соединение, но SFTP - это отдельный протокол, который запускается через соединение SSH и требует отдельного туннеля. В OpenSSH (и это Windows Port, copSSH) это приложение sftp.exe, которое выполняет SFTP.

Теперь о FTP против SFTP. Пожалуйста, проверьте статью, которая объясняет разницу между SFTP и FTP (S). Если LabView поддерживает FTP, это не поможет вам, когда вам нужно выполнить передачу SFTP.

Я не знаю, можно ли использовать внешние элементы управления ActiveX в LabView. Если вы можете, вы можете проверить наш элемент управления SFTP ActiveX, который позволит вам выполнить перевод. Если все, что вы можете сделать, это вызвать внешнее приложение, то вам придется использовать sftp.exe в copSSH.

Другие вопросы по тегам