PHP Classes
elePHPant
Icontem

File: example.key.php

Recommend this page to a friend!
  Classes of Christian Vigh  >  PHP SSH Connection Session  >  example.key.php  >  Download  
File: example.key.php
Role: Example script
Content type: text/plain
Description: Example script
Class: PHP SSH Connection Session
Run arbitrary length commands in a server with SSH
Author: By
Last change:
Date: 3 years ago
Size: 5,088 bytes
 

 

Contents

Class file image Download
<?php
   
/****************************************************************************************************

        This example script demonstrates the use of the SshSession class for accessing remote systems
        using password authentication.

        WARNING :
            You will have to supply the appropriate values for the following variables (defined
            in file example.inc.php) :
            - $host : remote host name or ip address
            - $port : ssh port on the remote host
            - $user : username used for the connection
            - $private_keyfile : the file that contains your private ssh key
            - $public_keyfile : the file that contains your public ssh key

        WARNING 2 :
            This example works only for accessing remote Unix systems.

        WARNING 3 :
            You will need two files for this example to run correctly : a public and a private
            key file.

        WARNING 4 :
            If you used puttygen to generate your public and private keys, you have to know that
            the key that is labelled :

                Public key for pasting into OpenSSH authorized_keys file

            will not have the correct format for using it as a public key on Unix systems.
            You will have to go to the Conversions menu and chose the "Export OpenSSH key"
            option.

        WARNING 5 :
            On your Unix system, you must add your public key in the .ssh/authorized_keys file
            of your remote user (see Warning 4).

        This example performs the following :
        1) Connect to a remote system using ssh password authentication
        2) Create a directory named "/tmp/sshexample" on the remote server
        3) Perform an "ls -al /usr" command and show its result
        4) Perform again an "ls -al" command on the root directory, redirecting its output to file
           "/tmp/sshexample/ls.out"
        5) Rename "/tmp/sshexample/ls.out" to ""/tmp/sshexample/ls.txt"
        6) Get the contents of file ""/tmp/sshexample/ls.txt" and display its contents
        7) Remove file "/tmp/sshexample/ls.txt"
        8) Remove directory "/tmp/sshexample" (for the sake of your own security, I do not include any
           example regarding recursive directory deletion).

     ****************************************************************************************************/

    
require_once ( 'Session.phpclass' ) ;

     require (
'example.inc.php' ) ;

     if (
php_sapi_name ( ) != 'cli' )
        echo (
'<pre>' ) ;

    
// Variables used for connection - they must be set by you if you want this example to work
    
$host = "5.196.23.225" ;
    
$port = 41937 ;
    
$user = 'root' ;
    
$password = 'w=6507stf/N4kE4:EtjeVve/' ;

    
// 1) Connect to a remote system using ssh password authentication
    
echo ( '1) Connecting to your system...' ) ;
        
$session = new SshSession ( $host, $port ) ;
        
$session -> Connect ( ) ; // Connection is not automatic
        
$session -> Authenticate ( new SshPublicKeyAuthentication ( $session, $user, $public_key_file, $private_key_file ) ) ;
        
$fs = $session -> GetFileSystem ( ) ; // Retrieve access to the remote file system
    
echo ( "done\n" ) ;

    
// 2) Create a directory named "/tmp/sshexample" on the remote server
    
echo ( "2) Creating remote directory $tmpdir..." ) ;
        
$tmpdir = '/tmp/sshexample' ;

         if ( !
$fs -> is_dir ( $tmpdir ) )
           
$fs -> mkdir ( $tmpdir ) ;
     echo (
"done\n" ) ;

   
// 3) Perform an "ls -al" command and show its result
   
echo ( "3) Listing contents of the /usr directory :\n" ) ;
       
// If you want to retrieve the output contents of the command in an array, you need to initialize the $output variable
        // to a non-null value.
        // If you want the Execute() method to simply display the output contents, remove this initialization
       
$output = '' ;
       
$status = $session -> Execute ( "ls -al /usr", $output ) ;
    echo (
implode ( "\n", $output ) . "\n" ) ;
    echo (
"--- Command status = $status\n" ) ;

   
// 4) Perform again an "ls -al" command on the root directory, redirecting its output to file "/tmp/sshexample/ls.out"
   
echo ( "4) Listing contents of the /usr directory, redirecting output to file $tmpdir/ls.out..." ) ;
       
$status = $session -> Execute ( "ls -al /usr >$tmpdir/ls.out" ) ;
    echo (
"done (status = $status)\n" ) ;

   
// 5) Rename "/tmp/sshexample/ls.out" to ""/tmp/sshexample/ls.txt"
   
echo ( "5) Renaming file $tmpdir/ls.out to $tmpdir/ls.txt..." ) ;
       
$status = $session -> Execute ( "mv $tmpdir/ls.out $tmpdir/ls.txt" ) ;
    echo (
"done (status = $status)\n" ) ;

   
// 6) Get the contents of file ""/tmp/sshexample/ls.txt" and display its contents
   
echo ( "6) Displaying contents of file $tmpdir/ls.txt :\n" ) ;
       
$output = $fs -> file_get_contents ( "$tmpdir/ls.txt" ) ;
    echo (
$output ) ;

   
// 7) Remove file "/tmp/sshexample/ls.txt"
   
echo ( "7) Removing file $tmpdir/ls.txt..." ) ;
       
$status = $fs -> unlink ( "$tmpdir/ls.txt" ) ;
    echo (
"done (status = $status)\n" ) ;

   
// 8) Remove directory "/tmp/sshexample"
   
echo ( "8) Removing directory $tmpdir..." ) ;
       
$status = $fs -> rmdir ( $tmpdir ) ;
    echo (
"done (status = $status)\n" ) ;

    echo (
"*** end of example script ***" ) ;