php脚本访问远程linux服务器并执行bash脚本

标签 php linux bash shell ssh

我正在尝试执行以下操作。

让 php 在我们的远程服务器上执行 shell 命令。这是因为我希望能够通过 bash 安装脚本 所以 php 将在远程服务器上执行 bash 脚本。

问题是由于某种原因无法连接到远程服务器。我已经尝试了几种方法来做到这一点,我必须使用 root 和密码。稍后我可以看看加密它们或类似的东西,但我不能使用 ssh key ,所以那是行不通的。我对它的 php 部分还很陌生,所以我需要一些帮助来确定如何连接到远程服务器。

我现在尝试的代码是

  $ip = '37.130.000.00'; 
$user = 'admin'; 
$pass = 'xxxxxxxxx'; 

$connection = ssh2_connect($ip); 
ssh2_auth_password($connection,$user,$pass); 
$shell = ssh2_shell($connection,"uptime");


 echo $shell;

出于某种原因,这段代码给我以下错误

fatal error :在中调用未定义的函数 ssh2_connect()

我怎样才能让它工作,或者我还应该做些什么才能正确连接到远程服务器,这一切都应该非常灵活,因为我们正在讨论应该能够以这种方式连接的 100 台服务器。

感谢任何输入。

最佳答案

该功能是由您似乎没有安装的可选扩展程序提供的。如果你的系统中有 libssh 和其他依赖项,通过执行获取 pecl-ssh

sudo pecl install ssh2 channel://pecl.php.net/ssh2-0.11.3

然后重新启动 php-fpm 或 apache(如果您使用的是 modphp)。

编辑:顺便说一句,之前有人问过这个问题,我见过的最明智的建议之一是切换到纯 php 实现,没有任何 pecl 扩展: php-function-ssh2-connect-is-not-working

关于php脚本访问远程linux服务器并执行bash脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28306184/

相关文章:

php - Yii 选择使用自定义字段

php - 使用两个变量在 Mysqli 中准备语句

php - PHP 能否检测到 Apache 是否已重新启动?

java.io.IOException : Permission denied with Wake on Lan 异常

bash - 如何根据语言环境变量格式化 float 以供显示?

bash - Bash脚本SSH到特定服务器

javascript - 根据页面宽度将javascript文件添加到wordpress页脚

php - 形成对具有属性的 url 的操作

具有服务器端输入的 Java Linux 守护进程/服务

bash - 嵌套函数调用中的变量赋值意外地更改了调用者作用域中的局部变量