Hoe maak je een automatisch bestand download en upload tool met het WinSCP commando.


Datum van publicatie:9 december 2020.



INFOMARTION > Hoe maak je een automatisch bestand download en upload tool met het WinSCP commando.

Overzicht.

Maak een automatisch hulpprogramma voor het downloaden en uploaden van bestanden met het WinSCP commando. Voer de commando's van WinSCP uit met de opdrachtprompt. Het is geen verrassing dat WinSCP commando's levert. Normaal gesproken gebruikt u 'WinSCP.exe', maar 'WinSCP.com' is ook beschikbaar. U zult bijna nooit de map "C:Program Files (x86)\WinSCP" in de snelkoppelingsbestemming zien, omdat u die meestal in principe vanuit de snelkoppeling opent, maar als u naar de snelkoppelingsbestemming kijkt, zou "WinSCP.com" daar ook opgeslagen moeten zijn. Dit is waar het gereedschap wordt gemaakt.

Inhoudsopgave

  1. Wat is het WinSCP commando?
  2. Automatisch download hulpmiddel
  3. Automatisch upload hulpmiddel
  4. Andere commando's die vaak gebruikt kunnen worden
  5. samenvatting

1. Wat is het WinSCP commando?

Het WinSCP-commando is een commando waarmee u de WinSCP-bewerkingen kunt uitvoeren die u normaal in de GUI uitvoert. Deze handeling, die u normaal op het scherm zou verrichten, wordt uitgevoerd door middel van een commando.

1-1. Wat u kunt doen.

U kunt bestanden downloaden en uploaden, mappen aanmaken, shellcommando's aanroepen en nog veel meer.

Commando's die vaak gebruikt kunnen worden zijn.

open・・・Gebruikt voor verbinding.

get・・・Wordt gebruikt om bestanden te downloaden.

put・・・Gebruikt voor het uploaden van bestanden.

exit・・・Gebruikt om te snijden.

1-2. Wat je niet kunt doen.

Basis downloads en uploads van bestanden zijn mogelijk, maar na gebruik van het systeem lijkt het moeilijk om de details te controleren.

Het leek bijvoorbeeld moeilijk om "de datum van bijwerking van een bestand te controleren en een bestand met een gespecificeerde datum van bijwerking op te halen".

Als u complexe voorwaarden wilt verbinden aan het te manipuleren bestand, kunt u de shell aanroepen met het commando 'call', wat kan met Windows-commando's, Linux-commando's, enz.

2. Automatisch download hulpmiddel

Wij willen een tool maken dat automatisch de logs downloadt die op de Linux server staan.

2-1. maken

Maak een gereedschap met de volgende voorwaarden.

・Windows 10 als de uitvoeringsomgeving.

・De aan te schaffen server is Linux.

・IP adres 192.168.50.10.

Maak eerst een bat-bestand aan als startpunt voor de activering.

file_get.bat


@setlocal enabledelayedexpansion
@set time2=%time: =0%
@set MKDIR_NAME=%date:~0,4%%date:~5,2%%date:~8,2%%time2:~0,2%%time2:~3,2%%time2:~6,2%
@set FOLDER=%~dp0%MKDIR_NAME%
@mkdir %FOLDER%
@"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script=%~dp0ftp.txt /parameter %FOLDER% 

Behalve de laatste regel, is de rest van het proces een Windows commando. Inhoud.

@setlocal enabledelayedexpansion

Instellingen voor vertraagde omgevingsvariabelen. Kort gezegd voorkomt deze beschrijving dat een waarde wordt ingesteld op een variabele die niet mag worden weergegeven.

@set time2=%time: =0%
@set MKDIR_NAME=%date:~0,4%%date:~5,2%%date:~8,2%%time2:~0,2%%time2:~3,2%%time2:~6,2%
@set FOLDER=%~dp0%MKDIR_NAME%

Het proces om yyyymmddhmmss te krijgen van de huidige tijd en het uiteindelijk in de FOLDER variabele te stoppen.

@mkdir %FOLDER%

Maak een map 'yyyymmddhmmss' direct onder de map waar de batch werd uitgevoerd.

@"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script=%~dp0ftp.txt /parameter %FOLDER% 

WinSCP.com (WinSCP commando). De uitvoering voert de commando's uit die in "ftp.txt" staan in dezelfde map als waar het batchbestand is opgeslagen. Geef het zojuist aangemaakte mappad door als argument.

Hiermee is de creatie van het bestand van de oproeper voltooid. Het WinSCP commando wordt dan beschreven in "ftp.txt".

ftp.txt


option batch on
option transfer binary
open test:testpassword@192.168.50.10
get /var/log/httpd/access_log %1%\
close
exit

Inhoud.

option batch on

Voor processen die een bevraging vereisen, gaat het systeem er automatisch van uit dat "Nee" is geselecteerd en voert het proces automatisch uit. Als u dit opneemt, worden eventuele dubbele bestandsnamen automatisch overschreven. (U kunt een map "jjjjmmddhmmss" maken en de bestanden daarin plaatsen, zodat er geen dubbele bestandsnamen zijn, dat wel.)

option transfer binary

De instelling is om de gegevens in binaire modus over te dragen.

open test:testpassword@192.168.50.10

gebruikersnaam:pass-word@IP-adres'. Maak verbinding met het IP adres "192.168.50.10".

get /var/log/httpd/access_log %1%\

Sla '/var/log/httpd/access_log' op in de map 'yyyymmddhhmmss'.(%1%' is het argument dat is doorgegeven in file_get.bat)

Reguliere expressies kunnen ook worden gebruikt, dus als je schrijft "/var/log/httpd/*", kan het hele log worden opgehaald.

close
exit

Dit is een ontkoppelingsproces.

Hiermee is de creatie van het gereedschap voltooid.

2-2. uitvoeringsvoorbereiding

Voorafgaand aan de executie worden vingerafdrukken genomen.

Als de server nog nooit via WinSCP is verbonden, zal u worden gevraagd of het veilig is om verbinding te maken. Als u op "Ja" drukt, wordt een aantekening van het drukken op "Ja" achtergelaten op een plaats die het Windows-registergebied wordt genoemd. Dit zorgt ervoor dat het systeem niet een tweede keer wordt gecontroleerd. Het is nodig om dit van tevoren te doen en informatie over de server op te slaan in het registergebied om er zeker van te zijn dat het veilig is om verbinding mee te maken, dus voer de volgende commando's uit op de opdrachtprompt.

"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒U wordt om een antwoord gevraagd, voer 'y' in.
close
exit
exit

test:testpassword@192.168.50.10" moet worden vervangen door "gebruikersnaam:wachtwoord@IP-adres".

Hiermee zijn de voorbereidingen afgerond.

2-3. uitvoering

Eindelijk is het tijd om het uit te voeren. Dubbelklik op 'file_get.bat'.

Succes als de map "yyyymmddhhmmss" is aangemaakt en de logs in de map zijn opgeslagen.

3. Automatisch upload hulpmiddel

De volgende stap is het maken van een tool om bestanden op een Linux server te zetten. De basisconstructie zal dezelfde zijn als die van het downloadinstrument.

3-1. maken

Maak een gereedschap met de volgende voorwaarden.

・Windows 10 als de uitvoeringsomgeving.

・De bestemmingsserver is Linux.

・IP adres 192.168.50.10.

Maak eerst een bat-bestand aan als startpunt voor de activering.

file_put.bat


@setlocal enabledelayedexpansion
@set FOLDER_NAME="put_files\*"
@set FOLDER=%~dp0%FOLDER_NAME%
@set PUT_FOLDER="/tmp/"
@"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script=%~dp0put_ftp.txt /parameter %FOLDER% %PUT_FOLDER%

Zoals uitgelegd in de automatische download tool, is een kleine uitleg achterwege gelaten, maar het proces is om de bestanden op te slaan in de 'put_files' map in dezelfde map als waar het batch bestand wordt uitgevoerd in '/tmp/'. Het eigenlijke opslagproces wordt beschreven in "put_ftp.txt".

put_ftp.txt


option batch on
option transfer binary
open test:testpassword@192.168.50.10
put %1% %2%
close
exit

Het commando "put %1% %2%" uploadt bestanden volgens het "bronbestand" en de "doelmap" die als argumenten zijn doorgegeven, hoewel een beetje uitleg is weggelaten omdat dit ook wordt uitgelegd bij het automatische downloadprogramma.

3-2. uitvoeringsvoorbereiding

Net als bij het automatische downloadprogramma worden vingerafdrukken vooraf gecontroleerd voordat ze worden uitgevoerd.(Niet vereist als het automatische downloadprogramma al een keer is uitgevoerd.)

Voer de volgende opdracht uit op de opdrachtprompt.

"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒U wordt om een antwoord gevraagd, voer 'y' in.
close
exit
exit

test:testpassword@192.168.50.10" moet worden vervangen door "gebruikersnaam:wachtwoord@IP-adres".

Hiermee zijn de voorbereidingen afgerond.

3-3. uitvoering

Eindelijk is het tijd om het uit te voeren. Dubbelklik op 'file_put.bat'.

Succes als de bestanden opgeslagen in 'put_files' zijn overgebracht naar de map '/tmp/'.

4. Andere commando's die vaak gebruikt kunnen worden

We hebben de basis van downloaden en uploaden geïntroduceerd, maar willen ook andere commando's beschrijven die vaak gebruikt kunnen worden.

4-1. sleutelauthenticatie

Eerder logde u in met wachtwoordauthenticatie volgens de volgende beschrijving.

open test:testpassword@192.168.50.10

"open gebruikersnaam:wachtwoord@IP-adres". Voor sleutelauthenticatie geldt het volgende.

open test@192.168.50.10 -privatekey=id_rsa.ppk

De '-privatekey=id_rsa.ppk' is het pad naar de sleutel. Aangezien het een relatief pad is, wordt aangenomen dat de sleutel (id_rsa.ppk) zich ook in de map bevindt waar het uitvoerbare bestand (bat-bestand) zich bevindt. Bijvoorbeeld, als de sleutel zich direct onder de C schijf bevindt, schrijf dan "-privatekey=C:\id_rsa.ppk".

4-2. De commandoregel oproepen

Om de commandoregel aan te roepen door middel van het WinSCP commando, schrijft u als volgt.

option batch on
option transfer binary
open test:testpassword@192.168.50.10
call sh /tmp/test.sh
close
exit

'test.sh' wordt uitgevoerd door 'call sh /tmp/test.sh'. Het is ook mogelijk om argumenten door te geven. Wanneer je argumenten doorgeeft, schrijf ze dan als "call sh /tmp/test.sh param1".

5. samenvatting

Het WinSCP commando is beschreven.

Als je normaal de WinSCP GUI gebruikt om dagelijks bestanden te loggen en te uploaden, kan je dit automatiseren door de tools te maken die in dit artikel beschreven worden. Het is misschien een kleine taak, maar het kan veel tijd in beslag nemen, behalve als het elke dag wordt gedaan. Wij moedigen u aan hulpmiddelen te creëren om de efficiëntie te verbeteren.

Bedankt voor het kijken tot het einde.