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.
CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int DECLARE @sTmp0 nvarchar(4000) -- Important: It is helpful to send the contents of the -- ssh.LastErrorText property when requesting support. DECLARE @ssh int EXEC @hr = sp_OACreate 'Chilkat.Ssh', @ssh OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END -- Any string automatically begins a fully-functional 30-day trial. DECLARE @success int EXEC sp_OAMethod @ssh, 'UnlockComponent', @success OUT, 'Anything for 30-day trial' IF @success <> 1 BEGIN EXEC sp_OAGetProperty @ssh, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 RETURN END -- Connect to an SSH server: DECLARE @hostname nvarchar(4000) DECLARE @port int -- Hostname may be an IP address or hostname: SELECT @hostname = '192.168.1.117' SELECT @port = 22 EXEC sp_OAMethod @ssh, 'Connect', @success OUT, @hostname, @port IF @success <> 1 BEGIN EXEC sp_OAGetProperty @ssh, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 RETURN END -- Wait a max of 5 seconds when reading responses.. EXEC sp_OASetProperty @ssh, 'IdleTimeoutMs', 5000 -- Authenticate using login/password: EXEC sp_OAMethod @ssh, 'AuthenticatePw', @success OUT, 'myLogin', 'myPassword' IF @success <> 1 BEGIN EXEC sp_OAGetProperty @ssh, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 RETURN END -- Open a session channel. (It is possible to have multiple -- session channels open simultaneously.) DECLARE @channelNum int EXEC sp_OAMethod @ssh, 'OpenSessionChannel', @channelNum OUT IF @channelNum < 0 BEGIN EXEC sp_OAGetProperty @ssh, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 RETURN 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. EXEC sp_OAMethod @ssh, 'SendReqExec', @success OUT, @channelNum, 'cp wine.html wine2.html && echo FINISHED' IF @success <> 1 BEGIN EXEC sp_OAGetProperty @ssh, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 RETURN END -- Read the channel until we receive the FINISHED string. EXEC sp_OAMethod @ssh, 'ChannelReceiveUntilMatch', @success OUT, @channelNum, 'FINISHED', 'ansi', 1 IF @success <> 1 BEGIN EXEC sp_OAGetProperty @ssh, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 RETURN END -- Close the channel: EXEC sp_OAMethod @ssh, 'ChannelSendClose', @success OUT, @channelNum IF @success <> 1 BEGIN EXEC sp_OAGetProperty @ssh, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 RETURN END -- Let's pickup the accumulated output of the command: -- (In this case, it will be the string "FINISHED") DECLARE @cmdOutput nvarchar(4000) EXEC sp_OAMethod @ssh, 'GetReceivedText', @cmdOutput OUT, @channelNum, 'ansi' IF @cmdOutput Is NULL BEGIN EXEC sp_OAGetProperty @ssh, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 RETURN END -- Display the remote shell's command output: PRINT @cmdOutput -- Disconnect EXEC sp_OAMethod @ssh, 'Disconnect', NULL END GO |
© 2000-2010 Chilkat Software, Inc. All Rights Reserved.