connected == false && $this->authenticated == false) { try { $this->Connect(); $this->DoCommand($command); } catch (SshConnectException $e) { $error = $e->getMessage(); throw new SshCommandException("Could not run command {$command}: Failed to connect: {$error}"); } catch (SshCommandException $e) { $error = $e->getMessage(); throw new SshCommandException($error); } } else { try { $this->DoCommand($command); } catch (SshCommandException $e) { $error = $e->getMessage(); throw new SshCommandException($error); } } } public function Connect() { $options = array( 'hostkey' => $this->keytype ); if($this->connection = ssh2_connect($this->host, $this->port, $options)) { $this->connected = true; if(empty($this->passphrase)) { $result = ssh2_auth_pubkey_file($this->connection, $this->user, $this->pubkey, $this->key); } else { $result = ssh2_auth_pubkey_file($this->connection, $this->user, $this->pubkey, $this->key, $this->passphrase); } if($result === true) { $this->authenticated = true; return true; } else { throw new SshAuthException("Could not connect to {$this->host}:{$this->port}: Key authentication failed"); } } else { throw new SshConnectException("Could not connect to {$this->host}:{$this->port}: {$error}"); } return false; } private function DoCommand($command) { $stream = ssh2_exec($this->connection, $command); var_dump($stream); } } ?>