أتمتة إرسال الملفات من خلال SFTP باستخدام copssh

StackOverflow https://stackoverflow.com/questions/3675753

  •  01-10-2019
  •  | 
  •  

سؤال

كل شهر نرسل تقارير إلى خادم باستخدام 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 ، لكننا نحتاج حقًا إلى استخدام هذا التطبيق المحدد.

هل كانت مفيدة؟

المحلول

إذا كانت SFTP.exe الخاصة بـ CopSsh هي أداة سطر أوامر ، وتتمكن النظام Exec في إصدار LabView من محطة "الإدخال القياسية" (موجودة على الأقل منذ 8.5) في محطة الإدخال القياسية.

إذا لم ينجح ذلك لسبب ما ، فهل يمكنك استخدامه المعجون بدلا من copssh؟ ال توثيق مكون PSFTP الخاص بـ PUTTY يقول أنه يمكنه تنفيذ سلسلة من الأوامر في ملف البرنامج النصي باستخدام مفتاح سطر الأوامر -b ، على سبيل المثال

psftp user@hostname -b myscript.scr

لذلك يمكنك جعل برنامج LabView الخاص بك إنشاء ملف البرنامج النصي ثم قم بتشغيله باستخدام System Exec.

نصائح أخرى

لقد كنت أستخدم WINSCP الذي يحتوي على إصدار سطر الأوامر ، winscp.com. وهو يدعم SFTP ويسمح بمزامنة و Keepuptodate و TOUN و TUP وحذفها على المجلدات والملفات. كلمة واحدة من التحذير ، Keepuptodate تعتمد على اتصال غير منقطع. على الرغم من أن WINSCP يمكنه إعادة تشكيل اتصال تلقائيًا ، إلا أن Keepuptodate لا يمكن. أظن أنه يستند إلى Microsoft's .NET Systemio FileSystemWatcher. لذلك أقوم بمزامنة منتظمة للحفاظ على مرآة لشجرة مجلد المصدر على الهدف البعيد.

أنت تمزج SSH و SFTP. يفتح SSH اتصالًا آمنًا ، لكن SFTP هو بروتوكول منفصل يتم تشغيله عبر اتصال SSH ويتطلب نفقًا منفصلًا. في Openssh (ومنفذ Windows ، Copssh) ، يتم تطبيق SFTP.exe الذي يقوم SFTP.

الآن حول FTP مقابل SFTP. يرجى التحقق من مقال يشرح الفرق بين SFTP و FTP (S). إذا كان LabView يدعم FTP ، فهذا لا يساعدك عندما تحتاج إلى إجراء عمليات نقل SFTP.

لا أعرف ما إذا كان يمكنك استخدام عناصر تحكم ActiveX الخارجية في LabView. إذا استطعت ، فأنت مرحب بك للتحقق من SFTP ActiveX Control, ، هذا سيتيح لك القيام بالنقل. إذا كان كل ما يمكنك فعله هو استدعاء التطبيق الخارجي ، فعليك استخدام sftp.exe من copssh.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top