Differences
This shows you the differences between the selected revisions of the page.
| library_session_executecommand 2012-02-18 | library_session_executecommand 2022-06-16 (current) | ||
| Line 1: | Line 1: | ||
| ====== Session.ExecuteCommand Method ====== | ====== Session.ExecuteCommand Method ====== | ||
| Executes command on the remote server. | Executes command on the remote server. | ||
| - | |||
| - | &future_feature | ||
| ===== Syntax ===== | ===== Syntax ===== | ||
| - | <code csharp> | + | <code csharp *> |
| public CommandExecutionResult ExecuteCommand(string command) | public CommandExecutionResult ExecuteCommand(string command) | ||
| + | </code> | ||
| + | |||
| + | <code vbnet *> | ||
| + | Public Function ExecuteCommand(command As String) As CommandExecutionResult | ||
| </code> | </code> | ||
| Line 14: | Line 16: | ||
| ==== Return Value ==== | ==== Return Value ==== | ||
| - | ''[[library_commandexecutionresult|CommandExecutionResult]]'' with command output. | + | ''[[library_commandexecutionresult|CommandExecutionResult]]'' with command output. See also [[library_session#results|Capturing results of operations]]. |
| ===== Exceptions ===== | ===== Exceptions ===== | ||
| Line 20: | Line 22: | ||
| | InvalidOperationException | Session is not opened. | | | InvalidOperationException | Session is not opened. | | ||
| | [[library_sessionlocalexception|SessionLocalException]] | Error communicating with ''[[executables#winscp.com|winscp.com]]''. \\ See the exception documentation for details. | | | [[library_sessionlocalexception|SessionLocalException]] | Error communicating with ''[[executables#winscp.com|winscp.com]]''. \\ See the exception documentation for details. | | ||
| - | | [[library_sessionremoteexception|SessionRemoteException]] | Session has failed. \\ Command has failed. \\ See the exception documentation for details. | | + | | [[library_sessionremoteexception|SessionRemoteException]] | Session has failed. \\ See the exception documentation for details. | |
| | TimeoutException | Timeout waiting for ''winscp.com'' to respond. | | | TimeoutException | Timeout waiting for ''winscp.com'' to respond. | | ||
| - | ===== Remarks ===== | + | ===== [[remarks]] Remarks ===== |
| With [[protocols|SFTP and SCP protocols]], executes arbitrary [[remote_command|remote shell command]]. | With [[protocols|SFTP and SCP protocols]], executes arbitrary [[remote_command|remote shell command]]. | ||
| With FTP protocol, executes a protocol command. | With FTP protocol, executes a protocol command. | ||
| With SFTP protocol, that does not allow execution of arbitrary remote command, separate [[shell session]] will be automatically opened. | With SFTP protocol, that does not allow execution of arbitrary remote command, separate [[shell session]] will be automatically opened. | ||
| + | |||
| + | Not supported with WebDAV and S3 protocols. | ||
| The command must not require user input. | The command must not require user input. | ||
| - | ===== Example ===== | + | ===== [[example]] Example ===== |
| ==== [[csharp]] C# Example ==== | ==== [[csharp]] C# Example ==== | ||
| <code csharp> | <code csharp> | ||
| Line 44: | Line 49: | ||
| { | { | ||
| // Setup session options | // Setup session options | ||
| - | SessionOptions sessionOptions = new SessionOptions(); | + | SessionOptions sessionOptions = new SessionOptions |
| - | sessionOptions.Protocol = Protocol.Sftp; | + | { |
| - | sessionOptions.HostName = "example.com"; | + | ················Protocol = Protocol.Sftp, |
| - | sessionOptions.UserName = "user"; | + | ···············HostName = "example.com", |
| - | sessionOptions.Password = "mypassword"; | + | ···············UserName = "user", |
| - | sessionOptions.SshHostKey = "ssh-rsa 1024 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"; | + | ···············Password = "mypassword", |
| + | ···············SshHostKeyFingerprint = "ssh-rsa 2048 xxxxxxxxxxx..." | ||
| + | }; | ||
| using (Session session = new Session()) | using (Session session = new Session()) | ||
| Line 56: | Line 63: | ||
| session.Open(sessionOptions); | session.Open(sessionOptions); | ||
| - | // Execute mysqldump on the server to dump all MySQL databases and compress the results | + | // Execute mysqldump on the server to dump all MySQL databases and |
| + | // compress the results | ||
| const string dbUsername = "USERNAME"; | const string dbUsername = "USERNAME"; | ||
| const string dbPassword = "PASSWORD"; | const string dbPassword = "PASSWORD"; | ||
| Line 62: | Line 70: | ||
| string dumpCommand = | string dumpCommand = | ||
| - | string.Format("mysqldump --opt -u {0} --password={1} --all-databases | gzip > {2}", | + | string.Format( |
| - | ·································dbUsername, dbPassword, tempFilePath); | + | ························"mysqldump --opt -u {0} --password={1} --all-databases | gzip > {2}", |
| - | session.ExecuteCommand(dumpCommand); | + | ·······················dbUsername, dbPassword, tempFilePath); |
| + | session.ExecuteCommand(dumpCommand).Check(); | ||
| // Download the database dump | // Download the database dump | ||
| - | session.GetFiles(tempFilePath, "D:\\dbbackup\\").Check(); | + | session.GetFiles(tempFilePath, @"D:\dbbackup\").Check(); |
| } | } | ||
| Line 78: | Line 87: | ||
| } | } | ||
| } | } | ||
| + | } | ||
| + | </code> | ||
| + | |||
| + | ==== [[vbnet]] VB.NET Example ==== | ||
| + | <code vbnet> | ||
| + | Imports WinSCP | ||
| + | |||
| + | Friend Class Example | ||
| + | |||
| + | Public Shared Function Main() As Integer | ||
| + | |||
| + | Try | ||
| + | ' Setup session options | ||
| + | Dim sessionOptions As New SessionOptions | ||
| + | With sessionOptions | ||
| + | .Protocol = Protocol.Sftp | ||
| + | .HostName = "example.com" | ||
| + | .UserName = "user" | ||
| + | .Password = "mypassword" | ||
| + | .SshHostKeyFingerprint = "ssh-rsa 2048 xxxxxxxxxxx..." | ||
| + | End With | ||
| + | |||
| + | Using session As New Session | ||
| + | ' Connect | ||
| + | session.Open(sessionOptions) | ||
| + | |||
| + | ' Execute mysqldump on the server to dump all MySQL databases and | ||
| + | ' compress the results | ||
| + | Const dbUsername As String = "USERNAME" | ||
| + | Const dbPassword As String = "PASSWORD" | ||
| + | Const tempFilePath As String = "/tmp/all_databases.gz" | ||
| + | |||
| + | Dim dumpCommand As String = | ||
| + | String.Format( | ||
| + | "mysqldump --opt -u {0} --password={1} --all-databases | gzip > {2}", | ||
| + | dbUsername, dbPassword, tempFilePath) | ||
| + | session.ExecuteCommand(dumpCommand).Check() | ||
| + | |||
| + | ' Download the database dump | ||
| + | session.GetFiles(tempFilePath, "D:\dbbackup\").Check() | ||
| + | End Using | ||
| + | |||
| + | Return 0 | ||
| + | Catch e As Exception | ||
| + | Console.WriteLine("Error: {0}", e) | ||
| + | Return 1 | ||
| + | End Try | ||
| + | |||
| + | End Function | ||
| + | |||
| + | End Class | ||
| + | </code> | ||
| + | |||
| + | ==== [[powershell]] PowerShell Example ==== | ||
| + | Learn more about [[library_powershell|using WinSCP .NET assembly from PowerShell]]. | ||
| + | |||
| + | <code powershell> | ||
| + | try | ||
| + | { | ||
| + | # Load WinSCP .NET assembly | ||
| + | Add-Type -Path "WinSCPnet.dll" | ||
| + | |||
| + | # Setup session options | ||
| + | $sessionOptions = New-Object WinSCP.SessionOptions -Property @{ | ||
| + | Protocol = [WinSCP.Protocol]::Sftp | ||
| + | HostName = "example.com" | ||
| + | UserName = "user" | ||
| + | Password = "mypassword" | ||
| + | SshHostKeyFingerprint = "ssh-rsa 2048 xxxxxxxxxxx..." | ||
| + | } | ||
| + | |||
| + | $session = New-Object WinSCP.Session | ||
| + | |||
| + | try | ||
| + | { | ||
| + | # Connect | ||
| + | $session.Open($sessionOptions) | ||
| + | |||
| + | # Execute mysqldump on the server to dump all MySQL databases and compress the results | ||
| + | $dbUsername = "USERNAME" | ||
| + | $dbPassword = "PASSWORD" | ||
| + | $tempFilePath = "/tmp/all_databases.gz" | ||
| + | |||
| + | $dumpCommand = | ||
| + | "mysqldump --opt -u $dbUsername --password=$dbPassword --all-databases | " + | ||
| + | "gzip > $tempFilePath" | ||
| + | $session.ExecuteCommand($dumpCommand).Check() | ||
| + | |||
| + | # Download the database dump | ||
| + | $session.GetFiles($tempFilePath, "D:\dbbackup\").Check() | ||
| + | |||
| + | finally | ||
| + | { | ||
| + | # Disconnect, clean up | ||
| + | $session.Dispose() | ||
| + | } | ||
| + | |||
| + | exit 0 | ||
| + | } | ||
| + | catch | ||
| + | { | ||
| + | Write-Host "Error: $($_.Exception.Message)" | ||
| + | exit 1 | ||
| } | } | ||
| </code> | </code> | ||