php - 通过 PHP 执行 shell 命令?

标签 php linux shell ssh remote-server

我正在尝试通过 ssh 连接到远程服务器以检查特定文件是否存在。

我可以在命令行中使用 ssh,但每当我尝试使用我的脚本时,它都不会返回任何内容/我必须键入“exit”并按回车键才能返回到命令行。

步骤:

  1. ssh root@website.com
  2. CD ..
  3. ls ATMEXTRACT

我将所有这些命令放入输出中,因此它们看起来像这样:

$output = shell_exec("ssh root@website.com");
$ouput1 = shell_exec("cd ..");
$ouput2 = shell_exec("ls *ATMEXTRACT*");

echo($output2);

我很困惑为什么这可以直接在命令行中工作,但在脚本中却失败了。非常感谢任何帮助

最佳答案

这是您交互式执行的操作:

  • 在当前 shell 中运行 ssh root@website.com
    • ssh中输入cd ..
    • ssh中输入ls *ATMEXTRACT*
    • ssh中输入exit,即退出
  • 找回原来的样子

这是您在脚本中执行的操作:

  • 在新的 shell 中运行 ssh root@website.com 并退出
  • 在第二个 shell 中运行 cd .. 并退出
  • 在第三个 shell 中运行 ls *ATMEXTRACT* 并退出

您可以尝试打开 ssh 命令并与之交互,但您也可以省去麻烦并使用 ssh 的命令行功能来指定要运行的命令:

$output = shell_exec("ssh root@website.com 'cd .. && ls *ATMEXTRACT*'");

请注意,这可能会因 PHP 网站脚本而失败,因为您需要设置身份验证机制。即使 ssh root@website.com 在您手动登录到 Web 服务器并尝试时没有密码连接也是如此。

关于php - 通过 PHP 执行 shell 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58615962/

相关文章:

php - 如何在一个查询中组合三个表并且我需要所有行?

php - 引用:什么是变量范围,哪些变量可从何处访问,什么是“ undefined variable ”错误?

php - 复制整个 MySql 数据库

linux - 查找当前路径的深度

php - ssh2_auth_pubkey_file 认证总是失败

php - 如何在不让字符串被引号包围的情况下使用 PDO::quote?

linux - 为 AWS 选择共享的 Linux AMI 机器镜像

linux - 如何在 Linux 中终止任何正在运行的 bteq 进程?

installation - 如何在 KDE 中以编程方式创建键盘快捷键?

双引号字符串内的 Bash TAB 补全