Chilkat
HOME
Android™
ASP
Visual Basic
VB.NET
C#
iOS (IPhone)
Objective-C
C++
C
MFC
Delphi
FoxPro
Java
Perl
PHP Extension
PHP ActiveX
Python
PowerShell
Ruby
SQL Server
VBScript
Make a Copy of a File on Remote SSH ServerDemonstrates how to make a copy of a file on a remote SSH server by running the "cp" command. This works if your server is Linux or Unix-based. For Windows-based servers, use the DOS "copy" command.
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, CHILKATRSALib_TLB, CHILKATSSHLib_TLB, OleCtrls; ... procedure TForm1.Button1Click(Sender: TObject); var ssh: TChilkatSsh; success: Integer; hostname: String; port: Integer; channelNum: Integer; cmdOutput: String; begin // Important: It is helpful to send the contents of the // ssh.LastErrorText property when requesting support. ssh := TChilkatSsh.Create(Self); // Any string automatically begins a fully-functional 30-day trial. success := ssh.UnlockComponent('Anything for 30-day trial'); if (success <> 1) then begin ShowMessage(ssh.LastErrorText); Exit; end; // Connect to an SSH server: // Hostname may be an IP address or hostname: hostname := '192.168.1.117'; port := 22; success := ssh.Connect(hostname,port); if (success <> 1) then begin ShowMessage(ssh.LastErrorText); Exit; end; // Wait a max of 5 seconds when reading responses.. ssh.IdleTimeoutMs := 5000; // Authenticate using login/password: success := ssh.AuthenticatePw('myLogin','myPassword'); if (success <> 1) then begin ShowMessage(ssh.LastErrorText); Exit; end; // Open a session channel. (It is possible to have multiple // session channels open simultaneously.) channelNum := ssh.OpenSessionChannel(); if (channelNum < 0) then begin ShowMessage(ssh.LastErrorText); Exit; end; // In this example, we'll copy wine.html to wine2.html // The "cp" command has no output (i.e. nothing is written to // the standard output) so we'll include an "echo FINISHED" // so we can programmatically retrieve the output and close // the channel. Closing the channel immediately after sending // the command is not good because w/ some SSH servers // it introduces a race condition where the command may not // be executed if the server thinks the client has disconnected. success := ssh.SendReqExec(channelNum,'cp wine.html wine2.html && echo FINISHED'); if (success <> 1) then begin ShowMessage(ssh.LastErrorText); Exit; end; // Read the channel until we receive the FINISHED string. success := ssh.ChannelReceiveUntilMatch(channelNum,'FINISHED','ansi',1); if (success <> 1) then begin ShowMessage(ssh.LastErrorText); Exit; end; // Close the channel: success := ssh.ChannelSendClose(channelNum); if (success <> 1) then begin ShowMessage(ssh.LastErrorText); Exit; end; // Let's pickup the accumulated output of the command: // (In this case, it will be the string "FINISHED") cmdOutput := ssh.GetReceivedText(channelNum,'ansi'); if (Length(cmdOutput) = 0 ) then begin ShowMessage(ssh.LastErrorText); Exit; end; // Display the remote shell's command output: Memo1.Lines.Add(cmdOutput); // Disconnect ssh.Disconnect(); end; |
© 2000-2010 Chilkat Software, Inc. All Rights Reserved.