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

Accessing shell script on remote server

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

  1. Raspberry pi
  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 服务器网站(使用 shell_exec())上显示温度时,它不起作用。 var_dump 为空。

PHP:

我试着用 "sudo" 来写它。

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

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

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

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

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

temperature.php raspberry pi:

<?php

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

temperature.php 在 Debian 上:

<?php

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

echo $temperature;