source: trunk/Modules/NetworkConfigAirOS/Generators/SSHClient.php

Last change on this file was 888, checked in by chronos, 4 years ago
  • Modified: More static types added.
File size: 1.2 KB
Line 
1<?php
2
3class SSHClient
4{
5 public string $SSHPath;
6 public int $Timeout;
7 public string $HostName;
8 public string $UserName;
9 public string $Password;
10 public string $PrivateKey;
11 public bool $Debug;
12
13 function __construct($HostName = 'localhost', $UserName = 'admin', $Password = '')
14 {
15 $this->HostName = $HostName;
16 $this->UserName = $UserName;
17 $this->Password = $Password;
18 $this->Debug = false;
19 $this->PrivateKey = '~/.ssh/id_rsa';
20 $this->SSHPath = '/usr/bin/ssh';
21 $this->Timeout = 3;
22 }
23
24 function Execute(string $Commands): array
25 {
26 $Commands = trim($Commands);
27 if ($Commands != '')
28 {
29 $Commands = addslashes($Commands);
30 $Commands = str_replace('$', '\$', $Commands);
31 //$Commands = str_replace(' ', '\ ', $Commands);
32 if ($this->PrivateKey != '') $PrivKey = ' -i '.$this->PrivateKey;
33 else $PrivKey = '';
34 $Command = $this->SSHPath.' -oBatchMode=yes -o ConnectTimeout='.$this->Timeout.' -l '.
35 $this->UserName.$PrivKey.' '.$this->HostName.' "'.$Commands.'"';
36 if ($this->Debug) echo($Command);
37 $Output = array();
38 exec($Command, $Output);
39 } else $Output = array();
40 if ($this->Debug) print_r($Output);
41 return $Output;
42 }
43}
Note: See TracBrowser for help on using the repository browser.