linux 使用curl从.sh接收结果

nue99wik  于 2023-02-07  发布在  Linux
关注(0)|答案(2)|浏览(402)

我尝试使用curl从. sh文件中获取结果(远程计算机CPU温度),但我收到的是来自. sh的代码。
我当前的代码curl-s http://192.168.1.5/cgi-bin/temp.sh
它返回. sh文件代码,而不是返回temp
我运行的是Apache2,如果将sh放在index.php文件中,就可以使用grep输出,但这一步似乎太多了。
谢谢你的建议。
尝试将文件改为. cgi。结果相同

q3aa0525

q3aa05251#

之所以得到temp.sh脚本的代码而不是它的输出,是因为curl只是下载文件,要真正执行脚本并返回其输出,需要在服务器上运行它,然后检索输出。
以下是您可以遵循的步骤:
1.确保该文件可使用chmod +x temp.sh执行。
1.在脚本的开头添加一个shebang行,指定用于执行脚本的解释器。对于bash脚本,它应该如下所示:#!/bin/bash.
修改Apache2配置以允许执行shell脚本。可以通过向Apache2配置文件中添加以下行来完成此操作:

ScriptAlias /cgi-bin/ /var/www/cgi-bin/
<Directory "/var/www/cgi-bin/">
    AllowOverride None
    Options +ExecCGI
    Require all granted
</Directory>

重新启动Apache2以应用更改:sudo service apache2 restart.
现在,您应该能够访问脚本的输出
致以亲切的问候。

pftdvrlh

pftdvrlh2#

我发现将curl命令更改为以下命令解决了问题:

curl -s http://192.168.1.5/cgi-bin/temp.sh | sh

我只是将curl命令通过管道传输到sh以返回结果。

相关问题