PowerShell之FTP文件上传
来源:互联网 发布:大韩帝国知乎 编辑:程序博客网 时间:2024/06/08 19:00
PowerShell之FTP文件上传
我的另一篇博文讲了怎样编写PowerShell脚本进行SFTP下载,FTP与SFTP大同小异,所以就讲讲FTP上传。本例是基于WinSCP的,所以需要下载一个WinSCPnet.dll动态文件。
我们通过一个xml配置文件配置IP,用户名,密码,上传目录等配置项,降低代码耦合。
本例中,我们将数据放在data文件夹下,脚本放在scripts文件夹下(假设本地文件目录和远程目录为E:\test\path\data,脚本目录为E:\test\path\scripts\)。
下面是upload.xml配置文件内容:
<?xml version="1.0" ?><ftpConfig> <Protocol>ftp</Protocol> <HostName>127.0.0.1</HostName> <UserName>admin</UserName> <Password>Password</Password> <RemotePath>/e/test/path/data/</RemotePath> <LocalPath>e:\test\path\data\</LocalPath></ftpConfig>
下面是PowerShell脚本代码(upload.ps1):
param ( $xmlData=[xml](Get-Content "E:\test\path\scripts\upload.xml"), $localPath = $xmlData.ftpConfig.LocalPath, $remotePath = $xmlData.ftpConfig.RemotePath, $dataFile = (Get-Date).toString("yyyy-MM-dd")+".txt", #数据文件 $flagFile = "flag_"+(Get-Date).toString("yyyyMMdd")+".txt" #标志文件)#等待10sfunction wait10sec{ $step=10 $add=0 $t=(get-date) $step-(($t.Hour*3600+$t.Minute*60+$t.Second)%$step)+$add}try{ # Load WinSCP .NET assembly Add-Type -Path "E:\test\path\scripts\WinSCPnet.dll" # Setup session options $sessionOptions = New-Object WinSCP.SessionOptions $sessionOptions.Protocol = [WinSCP.Protocol]$xmlData.ftpConfig.Protocol $sessionOptions.HostName = $xmlData.ftpConfig.HostName $sessionOptions.UserName = $xmlData.ftpConfig.UserName $sessionOptions.Password = $xmlData.ftpConfig.Password $session = New-Object WinSCP.Session try { # Connect $session.Open($sessionOptions) # Detect the flag file (10s检测一次标志文件是否存在) while(! (Test-Path($localPath+$flagFile))){ Get-Date Start-Sleep -s (wait10sec) } write-host "Start uploading..." $session.PutFiles($localPath+$dataFile,$remotePath).Check() write-host "End upload" } finally { # Disconnect, clean up $session.Dispose() } exit 0}catch [Exception]{ Write-Host ("Error: {0}" -f $_.Exception.Message) exit 1}
在代码中我们通过设置标志文件来进行数据文件自动上传,这种方式在文件传输跑批流程中比较适用,比如我有5G的数据文件需要传输,什么时候可以传输结束?这时我们可以在传输结束后生成一个标志文件(可以是空文件),在下一个文件传输环节中我只需要检测标志文件是否生成,以此判断数据文件是否全部传输。
0 0
- PowerShell之FTP文件上传
- 大文件上传之FTP文件上传
- GruntJs之FTP上传文件
- Android之FTP文件上传
- FTP文件操作之上传文件
- android小记之FTP文件上传
- android小记之FTP文件上传
- android小记之FTP文件上传
- android小记之FTP文件上传
- android小记之FTP文件上传
- 上传文件到FTP
- FTP上传文件
- FTP上传文件示例
- ftp上传文件
- FTP 文件上传
- FTP 文件上传
- FTP上传文件示例
- FTP上传文件
- Android——个性化Progress电池显示视图
- 学习笔记之JavaIO中的文件处理——File和RandomAccessFile
- ubuntu 16.04下安装cuda 8.0.44详细步骤
- Android传感器框架分析
- 学习笔记之java.io包中的字节流(下)—— FilterInputStream和FilterOutputStream
- PowerShell之FTP文件上传
- Spark-在工作集上进行集群计算
- 学习笔记之java.io包中的字节流(上)—— 基本的InputStream和OutputStream
- python+BeautifulSoup爬取不老歌的网页正文
- ASP.NET MVC 5 (六-2) 使用Razor表达式
- Accessibility辅助功能--一念天堂,一念地狱
- Kafka概览
- 学习笔记之Java IO整理概要
- matlab textread用法详解