gpt4 book ai didi

php - 访问远程服务器上的 shell 脚本

转载 作者:太空狗 更新时间:2023-10-29 12:14:52 32 4
gpt4 key购买 nike

所以首先我有 2 个服务器:

  1. 树莓派
  2. Linux Debian 服务器

pi 有一个显示房间当前温度的脚本。

这是脚本:

#!/bin/bash
i2cset -y 1 0x48 0xEE
dte=$(date +%Y-%m-%d)
tme=$(date +%H:%M:%S)
hexraw=$(i2cget -y 1 0x48 0xAA w)
msb=$(echo ${hexraw:4:2})
lsb=$(echo ${hexraw:2:1})
dec=$(printf "%d\n" "0x$msb$lsb")
temp=$(echo "scale=1; $dec/16" | bc)

echo $temp
exit

在 pi 的网站上显示温度工作正常。但是后来我在 linux 服务器上有另一个脚本,它采用 pi 脚本的值:

#!/bin/bash
x=$(ssh pi@172.16.248.210 sudo /home/pi/CurrTemp;)
echo $x

这也行。但是当我想在我的 Linux 服务器网站上显示 Temp 时(使用 shell_exec())它不起作用。 var_dump 是空的。

PHP:

我试着用“sudo”来写它。

我已将脚本所有者更改为 root。

最佳答案

ssh 身份验证不起作用,因为 Web 服务器不能(并且应该)访问您的 ssh key 。

您必须选择(后者绝对是首选!):

  • 在 Debian 服务器上为 Web 服务器创建另一个 ssh key ,并添加到 PI 上的 allowed_keys。您可以将 key 限制为仅允许该命令。

  • 在 PI 上创建一个小网络服务并以纯文本、xml、json 或其他格式输出温度。使用 file_get_contents() 通过 HTTP 获取文件,就像这样使用纯文本文件:

temperature.php 在树莓派上:

<?php

echo shell_exec('/home/pi/CurrTemp');

temperature.php 在 Debian 上:

<?php

$temperature = file_get_contents('http://172.16.248.210/temperature.php');

echo $temperature;

关于php - 访问远程服务器上的 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29304798/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com