Differences

This shows you the differences between the selected revisions of the page.

library_example_verify_file_checksum 2016-06-07 library_example_verify_file_checksum 2022-06-16 (current)
Line 1: Line 1:
====== Verify checksum of a remote file against a local file over SFTP/FTP protocol ====== ====== Verify checksum of a remote file against a local file over SFTP/FTP protocol ======
-The following example uses [[library|WinSCP .NET assembly]] from a [[library_powershell|PowerShell]] script. If you have another preferred language, you can easily translate it.+The following script uses [[library|WinSCP .NET assembly]] from a [[library_powershell|PowerShell]] script. If you have another preferred language, you can easily translate it.
-//In the latest beta version//, the example is distributed in WinSCP installer as a [[extension|WinSCP extension]]. &beta+The script is distributed in WinSCP installer as a [[extension|WinSCP extension]].
-You can use the script (e.g. ''VerifyFileChecksum.ps1'') [[guide_custom_commands_automation|from WinSCP GUI as a local custom command]]:+To run the script manually use:
-<code batch+<code> 
-powershell.exe -File C:\path\VerifyFileChecksum.ps1 -sessionUrl "!S" -localPath "!^!" -remotePath "!/!" -pause+powershell.exe -File C:\path\VerifyFileChecksum.ps1 -sessionUrl "sftp://username:password;fingerprint=ssh-rsa-xxxxxxxxxxx...@example.com/" -localPath "C:\local\path\file.dat" -remotePath "/remote/path/file.dat"
</code> </code>
-Make sure you check //[[ui_customcommand|Use remote files]]// option. +//Note that calculation of a remote file checksum is supported with [[sftp|SFTP]] and [[ftp|FTP]] protocols only, subject to support of [[protocols|respective protocol extension]].//
- +
-//Note that calculation of remote file checksum is supported with [[sftp|SFTP]] and [[ftp|FTP]] protocols only, subject to support of [[protocols|respective protocol extension]].//+
<code powershell - VerifyFileChecksum.ps1> <code powershell - VerifyFileChecksum.ps1>
# @name        Verify &Checksum # @name        Verify &Checksum
-# @command      powershell.exe -ExecutionPolicy Bypass -File "%EXTENSION_PATH%" -sessionUrl "!S" -localPath "!^!" -remotePath "!/!" -pause -sessionLogPath "%SessionLogPath%"+# @command      powershell.exe -ExecutionPolicy Bypass -File "%EXTENSION_PATH%"
 +#                  -sessionUrl "!E" -localPath "!^!" -remotePath "!/!" -pause
 +#                  -sessionLogPath "%SessionLogPath%"
# @description  Compares checksums of the selected local and remote file # @description  Compares checksums of the selected local and remote file
# @flag        RemoteFiles # @flag        RemoteFiles
-# @version      2+# @version      6
# @homepage    ~~SELF~~ # @homepage    ~~SELF~~
-# @require      WinSCP 5.8.4 +# @require      WinSCP 5.16 
-# @option      SessionLogPath sessionlogfile+# @option      SessionLogPath -config sessionlogfile
# @optionspage  ~~SELF~~#options # @optionspage  ~~SELF~~#options
param ( param (
-    # Use Generate URL function to obtain a value for -sessionUrl parameter. +    # Use Generate Session URL function to obtain a value for -sessionUrl parameter. 
-    $sessionUrl = "sftp://user:mypassword;fingerprint=ssh-rsa-xx-xx-xx@example.com/", +    $sessionUrl = "sftp://user:mypassword;fingerprint=ssh-rsa-xxxxxxxxxxx...@example.com/", 
-    [Parameter(Mandatory)]+    [Parameter(Mandatory = $True)]
    $localPath,     $localPath,
-    [Parameter(Mandatory)]+    [Parameter(Mandatory = $True)]
    $remotePath,     $remotePath,
    $sessionLogPath = $Null,     $sessionLogPath = $Null,
    [Switch]     [Switch]
-    $pause = $False+    $pause
) )
Line 69: Line 69:
        # Calculate remote file checksum         # Calculate remote file checksum
-        $remoteChecksum = [System.BitConverter]::ToString($session.CalculateFileChecksum("sha-1", $remotePath))+        $remoteChecksumBytes = $session.CalculateFileChecksum("sha-1", $remotePath) 
 +        $remoteChecksum = [System.BitConverter]::ToString($remoteChecksumBytes)
        Write-Host $remoteChecksum         Write-Host $remoteChecksum
    }     }
Line 90: Line 91:
    }     }
} }
-catch [Exception]+catch
{ {
-    Write-Host ("Error: {0}" -f $_.Exception.Message)+    Write-Host "Error: $($_.Exception.Message)"
    $result = 1     $result = 1
} }
Line 106: Line 107:
</code> </code>
-===== Options =====+===== [[options]] Options =====
In the //Session log file// you can specify a path to a [[logging|session log file]]. In the //Session log file// you can specify a path to a [[logging|session log file]].
 +In the //Keyboard shortcut//, you can specify a [[custom_key_shortcuts|keyboard shortcut]] for the extension.

Last modified: by martin