单击按钮时执行服务器端 shell 脚本

2023-12-06

我正在尝试执行驻留在我的服务器中的 shell 脚本。我需要在执行后获取此 shell 脚本的(字符串)结果。但是,只有当我的 ReactJS 应用程序中的某个按钮被按下时,才应该触发此脚本。

我花了相当多的时间寻找答案。到目前为止,所有答案都指向创建 Web 服务,然后让应用程序在单击按钮时调用该服务的想法。但没有一个答案指出这是如何完成的,也没有任何答案指出任何讨论这种方法的文章。 (抱歉,如果这是一个基本方法,但我上个月刚刚从 Udemy 学习了 ReactJS。)

您介意创建一个简单的代码来演示“shell 脚本 Web 服务”和按钮 (onClick) 之间的通信吗?或者至少提供一个讨论这种方法的文章链接?

谢谢你的帮助。

编辑:到目前为止我尝试过的是如何在Javascript中执行shell命令。但评论说这在浏览器上不起作用。我想这是我需要在网络服务中编写的代码?


最后我得到了它。以下是我所做的。

第1步:创建一个page/api/execute.js(适当命名你的文件)

步骤2:将此示例 shell 脚本(ls 命令)放入您的execute.js 中

export default function handler(req, res) {
  const execSync = require('child_process').execSync;
  // import { execSync } from 'child_process';  // replace ^ if using ES modules

  const output = execSync('ls', { encoding: 'utf-8' });  // the default is 'buffer'
  const splitted = output.split(/\r?\n/);  
  const filtered = splitted.filter( e => {
    return e !== '';
  });

  res.status(200).json(JSON.stringify(filtered))
}

第三步:在你的 React 组件中,添加一个带有 onClick 处理程序的按钮,如下所示:

<Button primary onClick={this.execCommand}>Execute Shell Command</Button>

第四步:创建 execCommand 函数:

async execCommand() {
    const req = await fetch("/api/execute");
    const data = await req.json();
    console.log(data);
}

第 5 步:单击按钮并在浏览器控制台上查看输出。

Cheers!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单击按钮时执行服务器端 shell 脚本 的相关文章

随机推荐

  • AWS服务通过校验和验证S3中文件的数据完整性?

    确保 S3 中的文件如其所声称的那样的一种方法是下载该文件 获取其校验和 并将结果与 您期望的校验和进行匹配 AWS 是否提供任何允许这种情况发生的服务without用户需要先下载文件吗 即理想情况下 一个简单的请求 url 提供 S3 文
  • 在 Scrapy 中使用经过身份验证的会话进行爬网

    In my 上一个问题 我对我的问题不是很具体 使用 Scrapy 进行经过身份验证的会话进行抓取 希望能够从更一般的答案中推断出解决方案 我可能应该用这个词crawling 所以 到目前为止 这是我的代码 class MySpider C
  • Swagger 2.x 过滤器未执行

    我正在 Jersey 2 34 Web 服务中使用 Swagger 2 x OpenAPI 3 0 io swagger v3 oas 记录 API 我扩展了 io swagger v3 core filter SpecFilter 来实现
  • 匿名类型列表的声明[重复]

    这个问题在这里已经有答案了 有没有办法声明匿名类型的列表对象 我是说 List
  • VSCODE Python 编译器不打印整个列表

    我使用 Visual Studio Code 进行任何编码 最近我注意到一件奇怪的事情 每当我尝试打印一个很长的列表时 该列表不会完全打印 它会被切断 primes for i in range 1000000 primes append
  • PHP:从json数组获取数据而不循环

    我想从数组中获取没有循环的数据 例如 我想获取 link click 的 值 我怎样才能做到这一点 我尝试过 但这不起作用 stats json decode data false link click stats gt data gt a
  • MySql Doctrine:查找给定变量是否为 IN 数组属性

    我有课堂任务categories整数数组属性 class Task var array ORM Column name categories type array nullable true private categories 现在在控制
  • 如何在 Apache 2.2.9 中使用 mod_ssl 将 openssl 0.9.8 升级到 1.0.2

    我被要求重新编译mo sslSuseSE11SP3 中使用 openssl 1 0 2 不过 我是 Suse 的新手 但对 linux 有一点了解 操作系统 苏塞SE11SP3 Openssl 0 9 8j 网络服务器 Apache htt
  • 用很少的条件删除所有重复的主题

    我正在尝试创建 sql 它将删除所有重复的标题 但必须删除具有以下条件的重复项 必须仅删除具有相同的重复项对象 ID 必须只保留最新的记录 最大的topic id topic id是每个主题AI的唯一id 到目前为止我已经做到了 使用 se
  • 将列转换为 JSON/dict 并展平 pyspark 列中的 JSON 值

    我是 Pyspark 的新手 我正在研究如何将列类型转换为 dict 类型 然后使用该列将该列展平为多个列explode 我的数据框如下所示 col1 col2 test 1 test1 Id 17 cName c1 Id 01 cName
  • 了解 Keras LSTM

    我试图调和我对 LSTM 的理解 并在此处指出克里斯托弗 奥拉的这篇文章在 Keras 中实现 我正在关注杰森 布朗利撰写的博客获取 Keras 教程 我主要困惑的是 将数据系列重塑为 samples time steps features
  • gfortran 编译器标志严格遵守 Fortran 77

    有什么办法让 gfortran 拒绝 Fortran 95 对 Fortran 77 的添加吗 我尝试过使用 std legacy标志 但这似乎只是删除了 f77 程序中的弃用警告 f95 的增强功能仍然可以正常工作 我也会尝试使用几个 g
  • Matlab中通过数据点拟合指数曲线

    有了可用的指数衰减数据 我想拟合一条穿过它的曲线 我怎样才能在Matlab中做到这一点 尝试这个 ft fittype exp1 cf fit time data ft 这是当time and data是你的数据向量 时间是自变量 数据是因
  • 如何获取 Azure Cosmos DB 上的批量 INSERT 的延续令牌?

    我想上传一个 CSV 文件 该文件表示要以快速且原子的方式添加到我的 Cosmos DB 集合中的 10k 文档 我有一个类似于以下伪代码的存储过程 function createDocsFromCSV csv text function
  • Mutagen:如何提取专辑封面属性?

    我正在尝试使用 python 3 7 1 和 mutagen 1 42 从 mp3 文件中获取专辑封面图片的属性 到目前为止只是宽度和高度 但可能会更多 但到目前为止似乎没有任何效果 我还能够正确提取一些其他信息 医生正在讲述APIC 但尝
  • 仅在 IE 上应用样式

    这是我的 CSS 块 actual form table padding 5px 0 15px 15px margin 0 0 30px 0 display block width 100 background f9f9f9 border
  • 网页宽度不是 100%

    我有一个一页网站 我的问题是 在右侧 大约有 15 像素的边距 我的 body 和 div 的宽度设置为 100 我还必须在页面底部稍微滚动 此问题与所有屏幕尺寸相关 我怎样才能解决这个问题 我不确定要突出显示哪些 css 和 html 代
  • 适用于 ios 的 Spotify API:从 ios spotify api 下载、保存、访问曲目

    我想知道是否可以使用Spotify ios api CocoaLibSpotify IOS 库 将曲目下载到iphone ipod ipad 设备 如果是这样 我还需要访问它们并随时玩 稍后我将在我的应用程序中使用它们 我认为我们可以使用
  • 将 HTML 实体转换为 Unicode,反之亦然

    如何在 Python 中将 HTML 实体转换为 Unicode 反之亦然 至于 反之亦然 我需要自己 导致我找到这个问题 这没有帮助 随后另一个有答案的网站 u some string encode ascii xmlcharrefrep
  • 单击按钮时执行服务器端 shell 脚本

    我正在尝试执行驻留在我的服务器中的 shell 脚本 我需要在执行后获取此 shell 脚本的 字符串 结果 但是 只有当我的 ReactJS 应用程序中的某个按钮被按下时 才应该触发此脚本 我花了相当多的时间寻找答案 到目前为止 所有答案