如何通过ssh在PHP中执行远程命令?
我试图通过ssh从php脚本中执行远程命令,我希望命令(stdout和stderr)的输出流式传输到原始主机 我知道在Perl和Ruby中这是可能的。我在php中找不到任何这样的例子 代码:如何通过ssh在PHP中执行远程命令?,php,ssh,Php,Ssh,我试图通过ssh从php脚本中执行远程命令,我希望命令(stdout和stderr)的输出流式传输到原始主机 我知道在Perl和Ruby中这是可能的。我在php中找不到任何这样的例子 代码: 通过ssh在PHP中执行远程命令的最佳方式是什么?您安装了SSH2软件包吗 安装PECL SSH2包是一个PITA。试试看。请看这篇文章,了解不惜一切代价避免PECL SSH2扩展的原因: 如果由于繁文缛节而无法添加php包,这里有一个简单的类可以实现这一点 class ExecuteRemote {
通过ssh在PHP中执行远程命令的最佳方式是什么?您安装了SSH2软件包吗
安装PECL SSH2包是一个PITA。试试看。请看这篇文章,了解不惜一切代价避免PECL SSH2扩展的原因:
如果由于繁文缛节而无法添加php包,这里有一个简单的类可以实现这一点
class ExecuteRemote
{
private static $host;
private static $username;
private static $password;
private static $error;
private static $output;
public static function setup($host, $username=NULL, $password=NULL)
{
self::$host = $host;
self::$username = $username;
self::$password = $password;
}
public static function executeScriptSSH($script)
{
// Setup connection string
$connectionString = self::$host;
$connectionString = (empty(self::$username) ? $connectionString : self::$username.'@'.$connectionString);
// Execute script
$cmd = "ssh $connectionString $script 2>&1";
self::$output['command'] = $cmd;
exec($cmd, self::$output, self::$error);
if (self::$error) {
throw new Exception ("\nError sshing: ".print_r(self::$output, true));
}
return self::$output;
}
}
至少在ubuntu上:以下说明有效:
通过SSH密钥管理身份验证,它非常简单:
$cmd = 'ssh user@host script ' . $arguments . ' 2>/dev/null';
$result = shell_exec($cmd);
PHP5.5看起来您还没有安装pecl ssh2包。我确实尝试过安装ssh2,@sudo pecl install ssh2channel://pecl.php.net/ssh2-v 问题是:未能在首选状态“稳定”下下载pecl/ssh2,最新版本为0.11.2版,稳定性为“beta”,使用channel://pecl.php.net/ssh2-0.11.2"要安装parsePackageName():“version”既不是有效版本,也不是中的有效状态channel://pecl.php.net/ssh2-version“无效的包名称/包文件”channel://pecl.php.net/ssh2-version“安装失败,如果我从源代码处尝试,但不知道如何编译config.m4,我尝试了,安装失败sudo pecl install ssh2channel://pecl.php.net/ssh2-version 测试仪的[sudo]密码:未能在首选状态“稳定”下下载pecl/ssh2,最新版本为0.11.2版,稳定性为“beta”,使用channel://pecl.php.net/ssh2-0.11.2“要安装parsePackageName():“版本”在“”中既不是有效版本也不是有效状态channel://pecl.php.net/ssh2-version“无效的包名称/包文件”channel://pecl.php.net/ssh2-version“安装失败你是说他可以添加一个php包,如果这不是一个危险信号的话。你说的是什么样的PHP包?第三方图书馆?有什么建议吗?我想我指的是ssh2 pecl包。然而,自从5年前回答这个问题以来,Composer已经成为php的一个有用工具。查看getcomposer.org,获取您可能需要的所有软件包。
class ExecuteRemote
{
private static $host;
private static $username;
private static $password;
private static $error;
private static $output;
public static function setup($host, $username=NULL, $password=NULL)
{
self::$host = $host;
self::$username = $username;
self::$password = $password;
}
public static function executeScriptSSH($script)
{
// Setup connection string
$connectionString = self::$host;
$connectionString = (empty(self::$username) ? $connectionString : self::$username.'@'.$connectionString);
// Execute script
$cmd = "ssh $connectionString $script 2>&1";
self::$output['command'] = $cmd;
exec($cmd, self::$output, self::$error);
if (self::$error) {
throw new Exception ("\nError sshing: ".print_r(self::$output, true));
}
return self::$output;
}
}
$cmd = 'ssh user@host script ' . $arguments . ' 2>/dev/null';
$result = shell_exec($cmd);