Μεταφορά δεδομένων 1s θύρα 21. Αντιγραφή αρχείου από διακομιστή SFTP

Αυτό το άρθρο παρουσιάζει τις λύσεις για σφάλματα σύνδεσης στο Διαδίκτυο που χρησιμοποιώ στην πράξη.

Στην περίπτωσή μου, το πρόβλημα επιλύθηκε με την επεξεργασία του αρχείου C:\WINDOWS\system32\drivers\etc\hosts "192.168.0.1 domain name of the site" στον πελάτη ή στον διακομιστή - όπου λειτουργεί εργασία ρουτίνας. Μετά από αυτό, οι ενσωματωμένες συνδέσεις Διαδικτύου 1C άρχισαν να λειτουργούν:

SwapFilesDirectory = "D:\temp\"; ResponseFileName = ExchangeFilesDirectory + "cards.xml"; headers = "discount.php"; ProxyK = απροσδιόριστο; Προσπάθεια ProxyK = Νέο InternetProxy; ProxyK.Set("http", ProxyK.Server("http"), ProxyK.Port("http")); Εξαίρεση EndTry; ProxyK.User = "************"; ProxyK.Password = "****************"; Connect = New HTTPConnection("domain sitename",ProxyK); Προσπάθεια Connect.Get(Headers, ResponseFileName); Σύνδεση = απροσδιόριστο; Exception Error = DescriptionError(); F = New TextDocument; F.AddLine(Σφάλμα); F.Write(ResponseFileName); F = ""; Τέλος απόπειρας;

Βοήθησε επίσης η επεξεργασία etc\host, μετά την οποία λειτούργησε η σύνδεση από τη δημοσίευση Αποστολή συμβολοσειράς HTTP με επεξεργασία απόκρισης

Δοκιμάζοντας XMLHttp = GetCOMObject("", "Microsoft.XMLHTTP"); Exception Error = DescriptionError(); F = New TextDocument; F.AddLine(Σφάλμα); F.Write("D:\temp\cards21.txt"); F = ""; ΕΠΙΣΤΡΟΦΗ; Τέλος απόπειρας; Προσπάθεια XMLHttp.Open("GET", "http://sitename/discount.php", False); Exception Error = DescriptionError(); F = New TextDocument; F.AddLine(Σφάλμα); F.Write("D:\temp\cards22.txt"); F = ""; ΕΠΙΣΤΡΟΦΗ; Τέλος απόπειρας; XMLHttp.Send(); Αν XMLHttp.Status = 200 Τότε Str = ""; Attempt Str = XMLHttp.ResponseText; Exception Str = DescriptionError(); Τέλος απόπειρας; F = New TextDocument; F.AddLine(R); F.Write("D:\temp\cards23.txt"); F = ""; Άλλο F = New TextDocument; F.AddString(XMLHttp.Status); F.Write("D:\temp\cards24.txt"); F = ""; Τέλος εαν;

Η σύνδεση περνά κανονικά μέσω του στοιχείου dialmail, αλλά δεν ήταν δυνατό να λειτουργήσει:

//If LoadExternalComponent(CatalogIB() + "DialMail.dll") = 0 Στη συνέχεια // Report("Αποτυχία φόρτωσης του στοιχείου DialMail.dll!"); //ReturnStatus(0); // ΕΠΙΣΤΡΟΦΗ; //Τέλος εαν; //Δοκιμάστε // FTP = CreateObject("AddIn.FTP"); // FTP.LogFileName = "c:\dialmail_ftp.log"; // FTP.WriteLogFile = 1; // FTP.WriteTechnicalLogFile = 1; //Exception // Report("Αποτυχία δημιουργίας αντικειμένου από το στοιχείο DialMail.dll!"); //ReturnStatus(0); // ΕΠΙΣΤΡΟΦΗ; //EndTry; //FTP.UserNameProxy = UserNameProxy; //FTP.PasswordProxy = PasswordProxy; //FTP.HostProxy = HostProxy; //FTP.PortProxy = PortProxy; //// Εάν FTP.UseProxy = 0 τότε //// όλες οι παραπάνω παράμετροι αγνοούνται //FTP.UseProxy = 2; //FTP.UseSSL = 0; //FTP.NewRFC = 0; //FTP.BinaryMode = 0; //FTP.TimeToBreak = 1000000; // Timeout //If FTP.Connect(FTPServer, // FTPPort, // FTPUser, // FTPPassword, 0) = 0 Στη συνέχεια // Warning("Αποτυχία σύνδεσης με διακομιστή FTP"); //Διαφορετικά // Συνδεδεμένο = 1; //Τέλος εαν; //Notify(FTP.StRObjectVersion); //TekFTPCatalog = FTP.CurrentDirectory();

03/28/13 13:44:01.500 FTP: Σύνδεση στην πρίζα
03/28/13 13:44:01.515 FTP: Συνδέθηκε με επιτυχία στην πρίζα
03/28/13 13:44:01.671 FTP 03/28/13 13:44:01.671 FTP --> USER 931013677
03/28/13 13:44:01.687 FTP 03/28/13 13:44:01.687 FTP --> PASS *****
03/28/13 13:44:01.703 FTP 03/28/13 13:44:01.703 FTP --> TYPE I
03/28/13 13:44:01.718 FTP 03/28/13 13:44:01.718 FTP --> STRU F
03/28/13 13:44:01.734 FTP 03/28/13 13:44:01.734 FTP --> REST 0
03/28/13 13:44:01.734 FTP 03/28/13 13:44:01.750 FTP --> REST 1
03/28/13 13:44:01.750 FTP 03/28/13 13:44:01.765 FTP --> REST 0
03/28/13 13:44:01.765 FTP 03/28/13 13:44:01.781 FTP --> PWD
03/28/13 13:44:01.781 FTP 03/28/13 13:44:02.968 FTP --> PWD
03/28/13 13:44:02.984 FTP 03/28/13 13:44:02.984 FTP --> PASV
03/28/13 13:44:03.000 FTP28.03.13 13:44:03.000 FTP --> LIST

όταν προσπαθείτε να ανεβάσετε ένα αρχείο στον διακομιστή, υπάρχουν σφάλματα υποδοχής 10054

Σφάλμα υποδοχής #10054 επαναφορά σύνδεσηςαπό συνομήλικους

Δεν γράφονται πολλά για αυτό το σφάλμα dialmail στο Διαδίκτυο, κυρίως ότι συμβαίνει, χωρίς λύση. Στον ιστότοπο του Gilev, αυτό το σφάλμα είναι γραμμένο ότι εμφανίζεται στην πλατφόρμα: http://www.gilev.ru/10054/

Ο τρόπος μου:

  1. Το αρχείο winscp έχει φορτωθεί (λειτουργεί ακόμη και χωρίς επεξεργασία κλπ\host)
  2. Ο σύνδεσμος http συσπάται με curl (αν και το curl δεν λειτουργεί χωρίς επεξεργασία etc\host)

Ακολουθεί μια λίστα με τα κύρια θεμελιώδη ζητήματα για την επίλυση του πρακτικού προβλήματος της χρήσης σύνδεσης στο Διαδίκτυο χρησιμοποιώντας έναν εξωτερικό πελάτη, το οποίο αποδείχθηκε σημαντικό να δοθεί προσοχή ...

Έμαθε για τις μπούκλες από τους ειδικούς του pradata.com
Το curl είναι ένα εργαλείο γραμμής εντολών για τη μεταφορά δεδομένων με σύνταξη URL, υποστηρίζοντας DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet και TFTP. Το curl υποστηρίζει πιστοποιητικά SSL, HTTP POST, HTTP PUT, φόρτωση FTP, μεταφόρτωση βάσει φόρμας HTTP, διακομιστή μεσολάβησης, cookies, έλεγχο ταυτότητας χρήστη+κωδικού πρόσβασης (Βασικό, Περιληπτικό, NTLM, Διαπραγμάτευση, kerberos...), βιογραφικό μεταφοράς αρχείων, διοχέτευση διακομιστή μεσολάβησης και φορτίο λεωφορείων άλλων

Η δημοσίευση Μεταφόρτωση αρχείων στο SFTP βοήθησε σχετικά με το winscp

Η αποκρυπτογράφηση ενδέχεται να είναι απενεργοποιημένη στον διακομιστή διευθύνσεις dns(όπως στην περίπτωσή μου), έτσι αντί για το όνομα τομέα του ιστότοπου - μια ψηφιακή διεύθυνση ah pi.

Το κείμενο της διαδικασίας που λειτουργεί πραγματικά για μένα (αντικαθιστώ το αρχείο σε έναν προσωρινό τοπικό κατάλογο και το ανεβάζω στον διακομιστή):
Αναφορά διαδικασίας (TabDoc, DateCon, DateStart) Εξαγωγή F = New TextDocument; F.AddLine("BarCode;Period;Purchase Amount"); Αρχείο="d:\temp\discount.txt"; F.Write(File); // http://programna1c.narod.ru/docs/WSH/1C_WSH_WshShell.html //Run(,) Εκτελεί μια εντολή. Το κύριο πλεονέκτημα είναι η παρουσία αναμονής για το τέλος της εργασίας της εκτελούμενης εντολής. //Παράμετροι: // - εντολή προς εκτέλεση. Καθορίζεται σε μορφή DOS και δεν υποστηρίζει μεγάλα ονόματα. // - ένας αριθμός που καθορίζει την επιλογή εμφάνισης του παραθύρου που εκκινείται από την εφαρμογή. Δεν απαιτείται. Πιθανές τιμές: //0 - Αποκρύπτει το παράθυρο και ενεργοποιεί ένα άλλο. //1 - Ενεργοποιεί και εμφανίζει το παράθυρο. Εάν το παράθυρο ελαχιστοποιηθεί ή μεγιστοποιηθεί, το σύστημα το επαναφέρει στο αρχικό του μέγεθος και θέση. Χρησιμοποιείται κατά το άνοιγμα του παραθύρου του προγράμματος για πρώτη φορά. //2 - Ενεργοποιεί το παράθυρο σε λειτουργία ελαχιστοποίησης. //3 - Ενεργοποιεί το παράθυρο και το μεγιστοποιεί σε πλήρη οθόνη. //4 - Εμφανίζει το παράθυρο στο νέο του μέγεθος και θέση. Το τρέχον παράθυρο παραμένει ενεργό. //5 - Ενεργοποιεί το παράθυρο και το εμφανίζει στο τρέχον μέγεθος. //6 - Ελαχιστοποιεί το παράθυρο και ενεργοποιεί το επόμενο στη γραμμή εργασιών. //7 - Εμφανίζει το παράθυρο ως ελαχιστοποιημένο. Το ενεργό παράθυρο παραμένει ενεργό. //8 - Εμφανίζει το παράθυρο στην τρέχουσα κατάστασή του. Το ενεργό παράθυρο παραμένει ενεργό. //9 - Ενεργοποιεί και εμφανίζει το παράθυρο. Εάν το παράθυρο ελαχιστοποιηθεί ή μεγιστοποιηθεί, το σύστημα το επαναφέρει στο αρχικό του μέγεθος και θέση. Χρησιμοποιείται για την επαναφορά ενός ελαχιστοποιημένου παραθύρου. //10 - εμφανίζει το παράθυρο στην ίδια κατάσταση με το παράθυρο του καλούντος προγράμματος. // - επισήμανση για αναμονή για τον τερματισμό της διαδικασίας. Πιθανές τιμές: 0 - μην περιμένετε το τέλος της εκτέλεσης της εντολής. -1 - περιμένετε να τελειώσει η εκτέλεση της εντολής. Δεν απαιτείται. Από προεπιλογή 0. //Σημείωση: Μπορείτε να εκτελέσετε τόσο την εφαρμογή όσο και οποιαδήποτε εντολή (παρόμοια με το Start->Run). //Παράδειγμα: //WshShell = Νέο COMObject("WScript.Shell"); //WshShell.Run("notepad",7,-1); WshShell = Νέο COMObject("wscript.Shell"); //Περιεχόμενα του αρχείου ap.ini //open ftp://*******:********@******************** // rm discount.txt //option transfer ascii //put D:\temp\discount.txt //close //exit CommandLine = "" ReturnValue = WshShell.Run(CommandLine, 1); WshShell = απροσδιόριστο; Διαδικασία λήξης

Εδώ είναι τι ισχύει για έναν εξωτερικό πελάτη ftp:

Εντολή για την εκτέλεση του σεναρίου:

D:\temp\WinSCP.com /script=D:\temp\ap.ini

Κείμενο σεναρίου:

ανοιχτό ftp://****************:********************@************ ***** ****** // μετά το σκυλί είναι η διεύθυνση IP, όχι το όνομα τομέα
μεταφορά επιλογής ascii
έκπτωση rm.txt
βάλε D:\temp\discount.txt
Κλείσε
έξοδος

Το αποτέλεσμα της εκτέλεσης αυτού του σεναρίου:

D:\temp>D:\temp\WinSCP.com /script=D:\temp\ap.ini
Συνδέομαι σε ***************** ...
Συνδεδεμένη με *********************. Αναμονή για μήνυμα καλωσορίσματος...
συνδεδεμένος
Έναρξη της συνεδρίας...
Ανάγνωση απομακρυσμένου καταλόγου...
ξεκίνησε η συνεδρία.
Ενεργή περίοδος λειτουργίας: ************@************************
μεταφορά ascii
έκπτωση.txt
D:\temp\discount.txt | 42 KiB | 39,1 KiB/s | ασκί | 100%
Η συνεδρία "****************************************" έκλεισε.
καμία συνεδρία.

Έλυσα τα προβλήματά μου χρησιμοποιώντας τον πελάτη WinSCP.com, χάρη στην ανάρτηση Μεταφόρτωση αρχείων στο SFTP

Αυτό το άρθρο παρουσιάζει τις λύσεις για σφάλματα σύνδεσης στο Διαδίκτυο που χρησιμοποιώ στην πράξη.

Στην περίπτωσή μου, το πρόβλημα επιλύθηκε με την επεξεργασία του αρχείου C:\WINDOWS\system32\drivers\etc\hosts "192.168.0.1 όνομα τομέα του ιστότοπου" στον πελάτη ή στο διακομιστή - όπου εκτελείται η προγραμματισμένη εργασία. Μετά από αυτό, οι ενσωματωμένες συνδέσεις Διαδικτύου 1C άρχισαν να λειτουργούν:

SwapFilesDirectory = "D:\temp\"; ResponseFileName = ExchangeFilesDirectory + "cards.xml"; headers = "discount.php"; ProxyK = απροσδιόριστο; Προσπάθεια ProxyK = Νέο InternetProxy; ProxyK.Set("http", ProxyK.Server("http"), ProxyK.Port("http")); Εξαίρεση EndTry; ProxyK.User = "************"; ProxyK.Password = "****************"; Connect = New HTTPConnection("domain sitename",ProxyK); Προσπάθεια Connect.Get(Headers, ResponseFileName); Σύνδεση = απροσδιόριστο; Exception Error = DescriptionError(); F = New TextDocument; F.AddLine(Σφάλμα); F.Write(ResponseFileName); F = ""; Τέλος απόπειρας;

Βοήθησε επίσης η επεξεργασία etc\host, μετά την οποία λειτούργησε η σύνδεση από τη δημοσίευση Αποστολή συμβολοσειράς HTTP με επεξεργασία απόκρισης

Δοκιμάζοντας XMLHttp = GetCOMObject("", "Microsoft.XMLHTTP"); Exception Error = DescriptionError(); F = New TextDocument; F.AddLine(Σφάλμα); F.Write("D:\temp\cards21.txt"); F = ""; ΕΠΙΣΤΡΟΦΗ; Τέλος απόπειρας; Προσπάθεια XMLHttp.Open("GET", "http://sitename/discount.php", False); Exception Error = DescriptionError(); F = New TextDocument; F.AddLine(Σφάλμα); F.Write("D:\temp\cards22.txt"); F = ""; ΕΠΙΣΤΡΟΦΗ; Τέλος απόπειρας; XMLHttp.Send(); Αν XMLHttp.Status = 200 Τότε Str = ""; Attempt Str = XMLHttp.ResponseText; Exception Str = DescriptionError(); Τέλος απόπειρας; F = New TextDocument; F.AddLine(R); F.Write("D:\temp\cards23.txt"); F = ""; Άλλο F = New TextDocument; F.AddString(XMLHttp.Status); F.Write("D:\temp\cards24.txt"); F = ""; Τέλος εαν;

Η σύνδεση περνά κανονικά μέσω του στοιχείου dialmail, αλλά δεν ήταν δυνατό να λειτουργήσει:

//If LoadExternalComponent(CatalogIB() + "DialMail.dll") = 0 Στη συνέχεια // Report("Αποτυχία φόρτωσης του στοιχείου DialMail.dll!"); //ReturnStatus(0); // ΕΠΙΣΤΡΟΦΗ; //Τέλος εαν; //Δοκιμάστε // FTP = CreateObject("AddIn.FTP"); // FTP.LogFileName = "c:\dialmail_ftp.log"; // FTP.WriteLogFile = 1; // FTP.WriteTechnicalLogFile = 1; //Exception // Report("Αποτυχία δημιουργίας αντικειμένου από το στοιχείο DialMail.dll!"); //ReturnStatus(0); // ΕΠΙΣΤΡΟΦΗ; //EndTry; //FTP.UserNameProxy = UserNameProxy; //FTP.PasswordProxy = PasswordProxy; //FTP.HostProxy = HostProxy; //FTP.PortProxy = PortProxy; //// Εάν FTP.UseProxy = 0 τότε //// όλες οι παραπάνω παράμετροι αγνοούνται //FTP.UseProxy = 2; //FTP.UseSSL = 0; //FTP.NewRFC = 0; //FTP.BinaryMode = 0; //FTP.TimeToBreak = 1000000; // Timeout //If FTP.Connect(FTPServer, // FTPPort, // FTPUser, // FTPPassword, 0) = 0 Στη συνέχεια // Warning("Αποτυχία σύνδεσης με διακομιστή FTP"); //Διαφορετικά // Συνδεδεμένο = 1; //Τέλος εαν; //Notify(FTP.StRObjectVersion); //TekFTPCatalog = FTP.CurrentDirectory();

03/28/13 13:44:01.500 FTP: Σύνδεση στην πρίζα
03/28/13 13:44:01.515 FTP: Συνδέθηκε με επιτυχία στην πρίζα
03/28/13 13:44:01.671 FTP 03/28/13 13:44:01.671 FTP --> USER 931013677
03/28/13 13:44:01.687 FTP 03/28/13 13:44:01.687 FTP --> PASS *****
03/28/13 13:44:01.703 FTP 03/28/13 13:44:01.703 FTP --> TYPE I
03/28/13 13:44:01.718 FTP 03/28/13 13:44:01.718 FTP --> STRU F
03/28/13 13:44:01.734 FTP 03/28/13 13:44:01.734 FTP --> REST 0
03/28/13 13:44:01.734 FTP 03/28/13 13:44:01.750 FTP --> REST 1
03/28/13 13:44:01.750 FTP 03/28/13 13:44:01.765 FTP --> REST 0
03/28/13 13:44:01.765 FTP 03/28/13 13:44:01.781 FTP --> PWD
03/28/13 13:44:01.781 FTP 03/28/13 13:44:02.968 FTP --> PWD
03/28/13 13:44:02.984 FTP 03/28/13 13:44:02.984 FTP --> PASV
03/28/13 13:44:03.000 FTP28.03.13 13:44:03.000 FTP --> LIST

όταν προσπαθείτε να ανεβάσετε ένα αρχείο στον διακομιστή, υπάρχουν σφάλματα υποδοχής 10054

Σφάλμα υποδοχής # 10054 Επαναφορά σύνδεσης από ομότιμο

Δεν γράφονται πολλά για αυτό το σφάλμα dialmail στο Διαδίκτυο, κυρίως ότι συμβαίνει, χωρίς λύση. Στον ιστότοπο του Gilev, αυτό το σφάλμα είναι γραμμένο ότι εμφανίζεται στην πλατφόρμα: http://www.gilev.ru/10054/

Ο τρόπος μου:

  1. Το αρχείο winscp έχει φορτωθεί (λειτουργεί ακόμη και χωρίς επεξεργασία κλπ\host)
  2. Ο σύνδεσμος http συσπάται με curl (αν και το curl δεν λειτουργεί χωρίς επεξεργασία etc\host)

Ακολουθεί μια λίστα με τα κύρια θεμελιώδη ζητήματα για την επίλυση του πρακτικού προβλήματος της χρήσης σύνδεσης στο Διαδίκτυο χρησιμοποιώντας έναν εξωτερικό πελάτη, το οποίο αποδείχθηκε σημαντικό να δοθεί προσοχή ...

Έμαθε για τις μπούκλες από τους ειδικούς του pradata.com
Το curl είναι ένα εργαλείο γραμμής εντολών για τη μεταφορά δεδομένων με σύνταξη URL, υποστηρίζοντας DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet και TFTP. Το curl υποστηρίζει πιστοποιητικά SSL, HTTP POST, HTTP PUT, φόρτωση FTP, μεταφόρτωση βάσει φόρμας HTTP, διακομιστή μεσολάβησης, cookies, έλεγχο ταυτότητας χρήστη+κωδικού πρόσβασης (Βασικό, Περιληπτικό, NTLM, Διαπραγμάτευση, kerberos...), βιογραφικό μεταφοράς αρχείων, διοχέτευση διακομιστή μεσολάβησης και φορτίο λεωφορείων άλλων

Η δημοσίευση Μεταφόρτωση αρχείων στο SFTP βοήθησε σχετικά με το winscp

Η αποκρυπτογράφηση της διεύθυνσης dns μπορεί να απενεργοποιηθεί στον διακομιστή (όπως στην περίπτωσή μου), επομένως, αντί για το όνομα τομέα του ιστότοπου, υπάρχει μια ψηφιακή διεύθυνση IP.

Το κείμενο της διαδικασίας που λειτουργεί πραγματικά για μένα (αντικαθιστώ το αρχείο σε έναν προσωρινό τοπικό κατάλογο και το ανεβάζω στον διακομιστή):
Αναφορά διαδικασίας (TabDoc, DateCon, DateStart) Εξαγωγή F = New TextDocument; F.AddLine("BarCode;Period;Purchase Amount"); Αρχείο="d:\temp\discount.txt"; F.Write(File); // http://programna1c.narod.ru/docs/WSH/1C_WSH_WshShell.html //Run(,) Εκτελεί μια εντολή. Το κύριο πλεονέκτημα είναι η παρουσία αναμονής για το τέλος της εργασίας της εκτελούμενης εντολής. //Παράμετροι: // - εντολή προς εκτέλεση. Καθορίζεται σε μορφή DOS και δεν υποστηρίζει μεγάλα ονόματα. // - ένας αριθμός που καθορίζει την επιλογή εμφάνισης του παραθύρου που εκκινείται από την εφαρμογή. Δεν απαιτείται. Πιθανές τιμές: //0 - Αποκρύπτει το παράθυρο και ενεργοποιεί ένα άλλο. //1 - Ενεργοποιεί και εμφανίζει το παράθυρο. Εάν το παράθυρο ελαχιστοποιηθεί ή μεγιστοποιηθεί, το σύστημα το επαναφέρει στο αρχικό του μέγεθος και θέση. Χρησιμοποιείται κατά το άνοιγμα του παραθύρου του προγράμματος για πρώτη φορά. //2 - Ενεργοποιεί το παράθυρο σε λειτουργία ελαχιστοποίησης. //3 - Ενεργοποιεί το παράθυρο και το μεγιστοποιεί σε πλήρη οθόνη. //4 - Εμφανίζει το παράθυρο στο νέο του μέγεθος και θέση. Το τρέχον παράθυρο παραμένει ενεργό. //5 - Ενεργοποιεί το παράθυρο και το εμφανίζει στο τρέχον μέγεθος. //6 - Ελαχιστοποιεί το παράθυρο και ενεργοποιεί το επόμενο στη γραμμή εργασιών. //7 - Εμφανίζει το παράθυρο ως ελαχιστοποιημένο. Το ενεργό παράθυρο παραμένει ενεργό. //8 - Εμφανίζει το παράθυρο στην τρέχουσα κατάστασή του. Το ενεργό παράθυρο παραμένει ενεργό. //9 - Ενεργοποιεί και εμφανίζει το παράθυρο. Εάν το παράθυρο ελαχιστοποιηθεί ή μεγιστοποιηθεί, το σύστημα το επαναφέρει στο αρχικό του μέγεθος και θέση. Χρησιμοποιείται για την επαναφορά ενός ελαχιστοποιημένου παραθύρου. //10 - εμφανίζει το παράθυρο στην ίδια κατάσταση με το παράθυρο του καλούντος προγράμματος. // - επισήμανση για αναμονή για τον τερματισμό της διαδικασίας. Πιθανές τιμές: 0 - μην περιμένετε το τέλος της εκτέλεσης της εντολής. -1 - περιμένετε να τελειώσει η εκτέλεση της εντολής. Δεν απαιτείται. Από προεπιλογή 0. //Σημείωση: Μπορείτε να εκτελέσετε τόσο την εφαρμογή όσο και οποιαδήποτε εντολή (παρόμοια με το Start->Run). //Παράδειγμα: //WshShell = Νέο COMObject("WScript.Shell"); //WshShell.Run("notepad",7,-1); WshShell = Νέο COMObject("wscript.Shell"); //Περιεχόμενα του αρχείου ap.ini //open ftp://*******:********@******************** // rm discount.txt //option transfer ascii //put D:\temp\discount.txt //close //exit CommandLine = "" ReturnValue = WshShell.Run(CommandLine, 1); WshShell = απροσδιόριστο; Διαδικασία λήξης

Εδώ είναι τι ισχύει για έναν εξωτερικό πελάτη ftp:

Εντολή για την εκτέλεση του σεναρίου:

D:\temp\WinSCP.com /script=D:\temp\ap.ini

Κείμενο σεναρίου:

ανοιχτό ftp://****************:********************@************ ***** ****** // μετά το σκυλί είναι η διεύθυνση IP, όχι το όνομα τομέα
μεταφορά επιλογής ascii
έκπτωση rm.txt
βάλε D:\temp\discount.txt
Κλείσε
έξοδος

Το αποτέλεσμα της εκτέλεσης αυτού του σεναρίου:

D:\temp>D:\temp\WinSCP.com /script=D:\temp\ap.ini
Συνδέομαι σε ***************** ...
Συνδεδεμένη με *********************. Αναμονή για μήνυμα καλωσορίσματος...
συνδεδεμένος
Έναρξη της συνεδρίας...
Ανάγνωση απομακρυσμένου καταλόγου...
ξεκίνησε η συνεδρία.
Ενεργή περίοδος λειτουργίας: ************@************************
μεταφορά ascii
έκπτωση.txt
D:\temp\discount.txt | 42 KiB | 39,1 KiB/s | ασκί | 100%
Η συνεδρία "****************************************" έκλεισε.
καμία συνεδρία.

Έλυσα τα προβλήματά μου χρησιμοποιώντας τον πελάτη WinSCP.com, χάρη στην ανάρτηση Μεταφόρτωση αρχείων στο SFTP

Το πρώτο πράγμα που πρέπει να κάνετε είναι να εγκαταστήσετε δωρεάν πρόγραμμα WinSCP, μπορείτε να το κατεβάσετε, επίσης υπάρχει όλη η απαραίτητη βιβλιογραφία για τη χρήση αυτού του προγράμματος.

Αφού εγκαταστήσετε το πρόγραμμα, πρέπει να προσθέσετε μια συνεδρία, όλα είναι απλά εκεί, καθορίζετε τον κεντρικό υπολογιστή, τη θύρα, τη σύνδεση και τον κωδικό πρόσβασης στον διακομιστή.

Σας συμβουλεύω επίσης να διατηρείτε αρχεία καταγραφής αυτού του προγράμματος, ώστε αργότερα να μπορείτε να βλέπετε ανά πάσα στιγμή γιατί δεν έγινε η ανταλλαγή δεδομένων ή να ελέγξετε το αρχείο καταγραφής για επιτυχία ή αποτυχία συγχρονισμού αρχείων. Για να δημιουργήσετε ένα αρχείο καταγραφής, πρέπει να μεταβείτε στην καρτέλα "Δημολόγια", να επιλέξετε το πλαίσιο για να γράψετε στο αρχείο και να επιλέξετε τη διαδρομή, σας συμβουλεύω να κάνετε το όνομα αρχείου με αυτόν τον τρόπο! S! Y! M D.txt, αυτό σημαίνει ότι θα δημιουργηθεί κάθε μέρα νέο αρχείογια ένα αρχείο καταγραφής με αυτό το όνομα, S είναι το όνομα της συνεδρίας, Y είναι το έτος, M είναι ο μήνας, D είναι η ημέρα, δηλαδή, θα είναι πολύ πιο βολικό για εσάς να διαβάσετε δεδομένα από τα αρχεία καταγραφής αργότερα.

Τώρα ας προχωρήσουμε απευθείας στον προγραμματισμό σε 1s, και για αυτό χρειάζεται μόνο να γνωρίζουμε τις βασικές εντολές WinSCP, ολόκληρη η λίστα των οποίων μπορεί να προβληθεί στον ιστότοπο του προγράμματος. Και θα σας δώσω μόνο εκείνες τις εντολές που χρησιμοποίησα και οι οποίες, κατά τη γνώμη μου, είναι αρκετές για 1 για να ανταλλάξουν με επιτυχία δεδομένα με διακομιστές sFTP ή FTPs. Θα γράψω επίσης τι, γιατί και με ποια σειρά έκανα:

1. Πριν κάνετε το συγχρονισμό δεδομένων, πρέπει να ελέγξετε αν υπάρχει καθόλου σύνδεση με τον διακομιστή, για αυτό κάνουμε τα εξής:

CheckConnection = """" + WinSCP Path + """" + " /console /command " + """επιλογή παρτίδα ματαίωση"" + """άνοιγμα " + Προφίλ WinSCP + """ " + " ""κλείσιμο "" ""Έξοδος""";

net.Run(CheckConnection, 0, True);

όπου PathWinSCP - συμβολοσειρά - διαδρομή προς το πρόγραμμα (c:\Program Files (x86)\WinSCP\WinSCP.com, Λάβετε υπόψη ότι η επέκταση αρχείου πρέπει να είναι com), ProfileWinSCP - συμβολοσειρά - προφίλ περιόδου λειτουργίας, πώς ονομάσατε την συνεδρία σας, σε παράδειγμα test_sFTP.

2. Αφού εκτελέσουμε την προηγούμενη εντολή, συνιστώ ανεπιφύλακτα να κάνετε τα εξής, αναζητήστε το αρχείο καταγραφής WinSCP κατά ημερομηνία και ελέγξτε το για σφάλμα στη σύνδεση, υπάρχουν πολλές επιλογές για το πώς να το κάνετε αυτό, αλλά έκανα αυτό: από το τέλος του κειμένου έψαξα για τη γραμμή "Απέτυχε" , μέχρι να βρει "Όνομα συνεδρίας: " + Προφίλ WinSCP", μετά από αυτό διακόπτουμε την αναζήτηση και, μάλιστα, αν βρέθηκε η γραμμή "Απέτυχε", τότε εκεί ήταν ένα σφάλμα κατά τη σύνδεση.

3. Εκτελέστε συγχρονισμό αρχείων:

Συμβολοσειρά συγχρονισμού = """" + Διαδρομή WinSCP + """" + " /κονσόλα /εντολή " + """ακύρωση παρτίδας επιλογής"" " + """άνοιγμα " + Προφίλ WinSCP + """ " + """ συγχρονισμός και των δύο " + DirectoryOnServer1C + " " + DirectoryOnSFTPServer + """ " + """ κλείσιμο"" "Έξοδος""";

net = Νέο COMObject("WScript.Shell");

net.Run(SyncString, 0, True);

Μετά από αυτό, ελέγχουμε ξανά το αρχείο καταγραφής.

Άλλες εντολές που μπορεί να χρειαστείτε:

Εγγραφή αρχείου στον διακομιστή SFTP:

ProgramString = """" + Διαδρομή WinSCP + """" + " /κονσόλα /εντολή " + """επιλογή ακύρωση παρτίδας"" + """άνοιγμα " + Προφίλ WinSCP + """ " + """θέτω " + DirectoryOnServer1C + "\" +FileName + " " + DirectoryOnSFTPServer + "/" + FileName + """ " + """"κλείσιμο"" ""έξοδος""";

net = Νέο COMObject("WScript.Shell");

Αντιγραφή αρχείου από διακομιστή SFTP:

ProgramString = """" + Διαδρομή WinSCP + """" + " /κονσόλα /εντολή " + """επιλογή ακύρωση παρτίδας"" " + """άνοιγμα " + Προφίλ WinSCP + """ " + """λήψη " + DirectoryOnSFTPServer + "/" + FileName Str + " " + DirectoryOnServer1C + "\" + """ " + """"κλείσιμο"" "Έξοδος""";

net = Νέο COMObject("WScript.Shell");

net.Run(ProgramString, 0, True);

Λάβετε μια λίστα αρχείων στον διακομιστή SFTP και γράψτε την σε ένα αρχείο:

ProgramString = "cmd.exe /c """"" + Διαδρομή WinSCP + """ /κονσόλα /εντολή " + """ακύρωση παρτίδας επιλογής"" " + """άνοιγμα " + Προφίλ WinSCP + """ " + "" "ls " + DirectoryOnSFTPServer + """""" + """ " + """ κλείσιμο""" + " > FMfiles.txt 2>&1" + """ " + """ έξοδος""" ;

RunApplication(ProgramString, LogPath, True, ReturnCode);




Φόρτωση...
Μπλουζα