Автоматизировать отправку файлов через sftp с помощью copssh - PullRequest
1 голос
/ 09 сентября 2010

Каждый месяц мы отправляем отчеты на сервер по 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 ]

2 голосов
/ 26 октября 2010

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

1 голос
/ 09 сентября 2010

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

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

psftp user@hostname -b myscript.scr

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

1 голос
/ 09 сентября 2010

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

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

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

...