WinSCPスクリプトからスループット速度を取得できますか?


0

スクリプトを実行すると、ダウンロード中にスループットが出力されますが、ダウンロード後にファイルの合計スループット速度を取得する方法はありますか?

私のスクリプト:

WinSCP.exe /console /script=script.txt /log=my_log.log > output

Script.txt

option batch abort
option confirm off
open IMC
get "/home/ftp/download/01_MBytes.txt" "C:\downloads\01_MBytes.txt"
exit

回答:


0

自分で計算できます。

スクリプトをWinSCP .NETアセンブリを使用するPowerShellスクリプト変換することをお勧めします。

次に、への呼び出しの前後に時間をかけてSession.GetFiles速度を計算できます。

$remotePath = "/home/ftp/download/01_MBytes.txt"
$localPath = "C:\downloads\01_MBytes.txt"

Write-Host "Starting download"
$start = Get-Date
$session.GetFiles($remotePath, $localPath).Check()
$duration = (Get-Date) - $start
$size = (Get-Item $localPath).Length / 1024
$speed = $size / $duration.TotalSeconds

Write-Host "Downloaded file $remotePath to $localPath"
Write-Host ("Size {0:N0} KB, Time {1:hh\:mm\:ss}" -f $size, $duration)
Write-Host ("Speed {0:N0} KB/s" -f $speed)

完全なスクリプトは次のとおりです。WinSCP.NETアセンブリの公式のPowerShellの例に基づいています。

try
{
    # Load WinSCP .NET assembly
    Add-Type -Path "WinSCPnet.dll"

    # Setup session options
    $sessionOptions = New-Object WinSCP.SessionOptions
    $sessionOptions.Protocol = [WinSCP.Protocol]::Sftp
    $sessionOptions.HostName = "example.com"
    $sessionOptions.UserName = "user"
    $sessionOptions.Password = "mypassword"
    $sessionOptions.SshHostKeyFingerprint = "ssh-rsa 2048 xxxxxxxxxxx...="

    $session = New-Object WinSCP.Session

    try
    {
        # Connect
        $session.Open($sessionOptions)

        $remotePath = "/home/ftp/download/01_MBytes.txt"
        $localPath = "C:\downloads\01_MBytes.txt"

        Write-Host "Starting download"
        $start = Get-Date
        $session.GetFiles($remotePath, $localPath).Check()
        $duration = (Get-Date) - $start
        $size = (Get-Item $localPath).Length / 1024
        $speed = $size / $duration.TotalSeconds

        Write-Host "Downloaded file $remotePath to $localPath"
        Write-Host ("Size {0:N0} KB, Time {1:hh\:mm\:ss}" -f $size, $duration)
        Write-Host ("Speed {0:N0} KB/s" -f $speed)
    }
    finally
    {
        # Disconnect, clean up
        $session.Dispose()
    }

    exit 0
}
catch [Exception]
{
    Write-Host $_.Exception
    exit 1
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.