我正在尝试通过 SSH 在我的 Raspberry Pi 上执行命令,并在我的 Windows 机器上的 PHP 脚本中获取它的结果。目前我可以在我的 RasPi 上执行命令,但我没有将任何结果返回到 PHP 脚本中。
我为此使用的代码:
<?php
$cmd = "C:\\path_to_putty\\putty.exe -ssh pi@RasPiIP -pw raspberry -m C:\\path_to_test.txt\\test.txt";
$result = shell_exec($cmd);
echo $result;
?>
为了向我的 RasPi 发送命令,代码有效。我已经通过例如更改test.txt
为sudo reboot
并按预期工作进行了多次测试。我正在使用 PuTTY 将我的命令(test.txt
当前是 nfc-list,它返回连接的扫描仪等在这里不重要)发送到 RasPi。
我想要实现的是$result
在我的命令执行时包含返回的数据。
甚至有可能这样做吗?如果是,如何(任何帮助表示赞赏)。如果不是,他们可能有其他方法来解决这个问题吗?
解决可能的重复问题:我正在使用 Windows 机器,并且我正在尝试获取(一个命令的)结果以在我的 PHP 脚本中重用。在另一个问题中,用户正在尝试保存完整的控制台日志并将其保存到另一个文件中。
首先,不要使用PuTTY。PuTTY 是一个用于交互式使用的 GUI 应用程序。使用 Plink,它是命令行/控制台等价于用于命令自动化的 PuTTY。作为一个控制台应用程序,它有一个标准输出,可以在 PHP 中读取(PuTTY 作为 GUI 应用程序没有标准输出)。
使用Plink,您还可以在Plink 命令行中指定命令,因此您无需创建test.txt
命令文件。
在任何情况下,都无法让 PuTTY 或 Plink 仅将命令的输出分开(至少不是从命令行)。
但是您可以做的是打印一些标题/预告片以区分命令输出的开始和结束,例如:
plink.exe -ssh pi@RasPiIP -pw raspberry "echo start-of-command && command && echo end-of-command"
然后在 PHP 中,您可以查找start-of-command
和end-of-command
以识别 Plink 输出的哪一部分真正是命令输出。
在任何情况下,您最好使用 PHP SSH 库来实现您想要的,而不是驱动外部应用程序。例如phpseclib。但这是一个完全不同的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句