Home > Article > Backend Development > php ssh2扩展操作类
php 的ssh2扩展可以找度娘
<?phpclass Ssh{ protected $host; protected $user; protected $password; protected $connection; protected $authMethods; protected $data; public function __construct($host, $user, $password) { $this->host = $host; $this->user = $user; $this->password = $password; $this->connection = ssh2_connect ( $this->host, 22 ); if (! $this->connection) die ( 'connection to ' . $host . ':22 failed' ); $this->auth_methods = ssh2_auth_none ( $this->connection, $this->user ); } /** * 执行shell命令 * @return code 101:认证失败 * 102:通过password方式登录远程服务器失败 * 103:shell命令执行失败 * 200:操作成功 */ public function execShell($shell) { if (in_array ( 'password', $this->auth_methods )) { if (ssh2_auth_password ( $this->connection, $this->user, $this->password )) { $stream = ssh2_exec ( $this->connection, $shell ); // 执行php stream_set_blocking ( $stream, true ); // 获取执行pwd后的内容 if ($stream === FALSE) { $this->data ['msg'] = 'shell命令执行失败'; } else { $this->data ['code'] = 200; $this->data ['msg'] = stream_get_contents ( $stream ); } } else { $this->data ['code'] = 102; $this->data ['msg'] = '通过password方式登录远程服务器失败'; } } else { $this->data ['code'] = 101; $this->data ['msg'] = '认证失败'; } return $this->data; }}$host='';$user='';$passwd='';$sshObj = new Ssh($host, $user, $passwd);$rs = $sshObj->execShell('pwd');var_dump($rs);