Javascript 通过NodeJS在树莓上运行bash脚本

Javascript 通过NodeJS在树莓上运行bash脚本,javascript,html,node.js,bash,raspberry-pi,Javascript,Html,Node.js,Bash,Raspberry Pi,我正在运行一个本地网站,在我的Pi上有NodeJS,我想通过连接到Pi的433MHz发送器来控制一盏灯。我已经编写了一个bash脚本,它可以完美地控制lamp,但是我找不到通过节点服务器上的HTML站点执行它的方法。 因此,我想知道这是否可能,因为它对我来说并不安全,我如何在javascript中将其作为一个函数实现,或者仅在服务器端实现?有很多方法可以做到这一点,但其中一种方法是创建一个api,以便您的网站可以对服务器进行api调用以打开指示灯断断续续 下面是一个简单的例子 HTML 函数开

我正在运行一个本地网站,在我的Pi上有NodeJS,我想通过连接到Pi的433MHz发送器来控制一盏灯。我已经编写了一个bash脚本,它可以完美地控制lamp,但是我找不到通过节点服务器上的HTML站点执行它的方法。
因此,我想知道这是否可能,因为它对我来说并不安全,我如何在javascript中将其作为一个函数实现,或者仅在服务器端实现?

有很多方法可以做到这一点,但其中一种方法是创建一个api,以便您的网站可以对服务器进行api调用以打开指示灯断断续续

下面是一个简单的例子

HTML


函数开启(){
$.ajax({
网址:'http://localhost:3000/api/light/on',
键入:“获取”,
数据类型:“json”,
成功:功能(数据){
控制台日志(数据);
},
错误:函数(错误){
log(`Error${Error}`);
}
});
}
功能关闭(){
$.ajax({
网址:'http://localhost:3000/api/light/off',
键入:“获取”,
数据类型:“json”,
成功:功能(数据){
控制台日志(数据);
},
错误:函数(错误){
log(`Error${Error}`);
}
});
}
服务器

//server.js
const-app=require('express')();
const server=require('http')。createServer(应用程序);
var cors=要求(“cors”);
常量shell=require('shelljs')
var端口=3000;
侦听(端口,()=>console.log(`API服务器在${port}!上运行))
app.use(cors())
应用程序获取(“/”,(请求,请求)=>{
res.sendFile(uu dirname+'/index.html')
})
app.get('/api/light/:status',(req,res)=>{
变量状态=请求参数('状态')
如果(状态=='on'){
shell.exec(“/打开灯”)
res.json({success:“灯已打开”})
}否则{
shell.exec(“/关灯”)
res.json({success:“灯光关闭”})
}
})
您所要做的就是更改shell.exec()调用的文件,使其工作

此应用程序需要

  • 快车
  • 科尔斯
  • shelljs

要安装,只需npm安装上面列出的名称

可以在服务器端进行安装,但不能在客户端进行安装,我认为这是您希望“通过HTML站点执行”的要求…我想看一下socket.io,或者你可以构建一个express apiYes使用ajax是可能的,如果你使它安全,它是安全的。它工作得非常好。非常感谢你的回答,它非常有用!没问题,如果这回答了你所有的问题,你能把它标记为答案吗