php 的ssh2扩展可以找度娘
<?php
class 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);