123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- <?php
- /*
- Pour utiliser cette classe, penser a ajouter le paquet :
- apt-get install php7.2-ssh
- service apache2 reload
- */
- class SshClient{
-
- public $connection;
- public function connect($ip,$port = 22,$publicKeyPath,$privateKeyPath,$privateKeyPassword = ''){
- $this->connection = ssh2_connect($ip, $port, array('hostkey'=>'ssh-rsa'));
- if (!ssh2_auth_pubkey_file($this->connection, 'root',
- $publicKeyPath ,
- $privateKeyPath, $privateKeyPassword)) throw new Exception("Authentification par clé loupée");
- }
-
- public function send_file($localPath,$remotePath,$permissions = 0755){
- return ssh2_scp_send($this->connection, $localPath, $remotePath,$permissions);
- }
- public function send_stream($stream,$remotePath,$permissions = 0755){
- $tempPath = File::temp().SLASH.sha1(rand(0,1000));
- file_put_contents($tempPath, $stream);
- $return = $this->send_file($tempPath,$remotePath);
- unlink($tempPath);
- return $return;
- }
- public function execute($command){
- $stream = ssh2_exec($this->connection, $command);
- $errorStream = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR);
- stream_set_blocking($errorStream, true);
- stream_set_blocking($stream, true);
- $error = stream_get_contents($errorStream);
- $response = stream_get_contents($stream);
- if(!empty($error)){
- $response = $error;
- }
- fclose($errorStream);
- fclose($stream);
- return $response;
- }
- public static function format_output($output){
- $output = nl2br($output);
- //$output = str_replace('[1A[2K', 'blue ?', $output);
- $output = str_replace('[31m', '<span class="text-danger">', $output);
- $output = str_replace('[32m', '<span class="text-success">', $output);
- $output = str_replace('[0m', '</span>', $output);
- $output = str_replace('[1A[2K', '', $output);
- $output = str_replace('[1B', '', $output);
- return $output;
- }
- public function disconnect(){
- ssh2_disconnect ($this->connection );
- }
- }
- ?>
|