Ho bisogno di scrivere uno script che trasferisce i file da una cartella su un altro server (Linux), ma lo script che trasferisce i file è su Windows e mi chiedevo se esistesse un'alternativa a scp
per PowerShell (o se ce n'era un'altra modo di farlo)Esiste un'alternativa SCP per PowerShell?
risposta
pscp.exe
è una valida opzione, ma ho utilizzato una libreria da Rebex per un paio di anni a questa parte per i trasferimenti SFTP e FTPS i n entrambe le app C# e gli script PowerShell con grande successo. Il loro pacchetto include anche an SCP object ma non l'ho usato personalmente.
È gratuito rispetto allo pscp
. Prima di selezionare il pacchetto Rebex, avevo preso in considerazione l'idea di seguire la rotta PuTTY ma il mio team ha deciso che avere una libreria in cui potevamo facilmente eseguire il rollover in qualsiasi app/script era proficua a lungo termine.
Se hai il budget per questo, sì :-) –
Questo post del blog può aiutarti a ottenere Rebex SFTP in esecuzione in PowerShell http://blog.rebex.net/news/archive/2008/ 25/09/how-to-use-FTP-o-SFTP-in-PowerShell.aspx –
C'è un piccolo strumento pratico che viene fornito con Putty chiamato pscp.exe
che farà questo e può essere chiamato in PowerShell facilmente.
Esempio sotto copie da Windows a una scatola di CentOS (accesso al sistema come usercode "disegno di legge") e si utilizza l'opzione -pw
in pscp
di passare a una password (in caso contrario la finestra di comando che viene generato richiederà la password di Linux):
Start-Process 'C:\Program Files (x86)\PuTTY\pscp.exe' -ArgumentList ("-scp -pw password C:\Document.rtf [email protected]:/home/bill/")
PuTTY Secure Copy client
Release 0.62
Usage: pscp [options] [[email protected]]host:source target
pscp [options] source [source...] [[email protected]]host:target
pscp [options] -ls [[email protected]]host:filespec
Options:
-V print version information and exit
-pgpfp print PGP key fingerprints and exit
-p preserve file attributes
-q quiet, don't show statistics
-r copy directories recursively
-v show verbose messages
-load sessname Load settings from saved session
-P port connect to specified port
-l user connect with specified username
-pw passw login with specified password
-1 -2 force use of particular SSH protocol version
-4 -6 force use of IPv4 or IPv6
-C enable compression
-i key private key file for authentication
-noagent disable use of Pageant
-agent enable use of Pageant
-batch disable all interactive prompts
-unsafe allow server-side wildcards (DANGEROUS)
-sftp force use of SFTP protocol
-scp force use of SCP protocol
Utilizza l'autenticazione basata su chiave invece di inserire la password nello script. – slestak
Punto giusto, questo è stato solo un breve esempio per dimostrare che PSCP potrebbe fare il lavoro richiesto :-) –
Windows noob qui. Quando faccio questo, ottengo solo una finestra vuota della console che scompare dopo circa 10 secondi e il trasferimento SCP non sembra essersi verificato. Qualche idea su cosa potrebbe succedere? – jayhendren
V'è anche un modo "NET friendly":
è possibile utilizzare la SharpSSH dll per eseguire i comandi ssh, e fare tranfers SCP/SFTP.
Ad esempio:
[Reflection.Assembly]::LoadFrom((Resolve-Path .\Tamir.SharpSSH.dll))
$ssh = New-Object Tamir.SharpSsh.Sftp("server","user","password")
$ssh.Connect()
$ssh.Put("C:\localfile","distantfile")
$ssh.Close()
C'è la biblioteca SSH.Net, anche, lo fa approssimativamente le stesse cose.
È possibile utilizzare WinSCP .NET assembly da PowerShell per trasferimenti SCP.
Ad esempio vedi http://winscp.net/eng/docs/library_powershell#example
L'esempio utilizza il protocollo SFTP. Per usare SCP, solo modificarlo per:
$sessionOptions.Protocol = [WinSCP.Protocol]::Scp
Anche se il protocollo di sostegno SCP di server, è probabile che supporta anche SFTP. SFTP è una scelta migliore, se hai l'opzione.
- 1. SCP per C#
- 2. Scp non interattivo
- 3. utilizzando scp nel terminale
- 4. Non esiste TFS Snapin per PowerShell su x64?
- 5. ant scp failure
- 6. Esiste un framework di test delle unità per testare PowerShell con gli script di PowerShell?
- 7. Libreria C++ orientata agli oggetti per ssh e scp
- 8. SCP e mkdir -p remoto
- 9. Esiste un equivalente di "this" in powershell?
- 10. scp da linux a windows
- 11. ricorsivamente SCP tranne directory corrente
- 12. Modalità di trasferimento file predefinita in SCP
- 13. Upload via SCP con Gradle
- 14. ssh alias nome di configurazione non funziona per SCP
- 15. Ottenere ANT per scp solo file nuovi/modificati
- 16. Errore durante l'utilizzo del comando scp "bash: scp: comando non trovato"
- 17. chmod per PowerShell
- 18. PowerShell 'Move-Item' non rende directory se non esiste
- 19. Aggiungi tipo di PowerShell: impossibile aggiungere il tipo. esiste già
- 20. Come disattivare CTRL-C durante scp?
- 21. File SCP dal server locale a Heroku
- 22. scp fornisce "non un file normale"
- 23. Java runtime con exec comando scp
- 24. Visual Studio Pubblica sito Web utilizzando SCP/SFTP
- 25. passando argomento yes durante il comando scp
- 26. Ruby NET :: SCP contenente caratteri jolly
- 27. Powershell Aggiungi solo alla matrice se non esiste
- 28. scp con numero di porta specificato
- 29. Docker Machine può ssh ma non scp
- 30. Bash, reindirizzamento stdout di comandi come scp
Per chiunque stia utilizzando PowerShell versione 3 o successiva, https://github.com/darkoperator/Posh-SSH è un'opzione. –