使用 Javascript 中的参数执行 bash 脚本

Execute bash script with params from Javascript

本文关键字:执行 bash 脚本 参数 Javascript 使用      更新时间:2023-09-26

我有一些Javascript代码,用于确定一个参数,然后必须转发到目标设备上的bash脚本。然后,bash 脚本复制一个新文件并重新启动系统。我正在使用 AJAX 调用 bash 脚本,代码如下:

var config = get_config(); // Simply returns an integer
var xml_http = get_xml_http_object();
xml_http.open("GET", bash_script_id + "?" + config, false);
xml_http.send(null); 

bash 脚本如下所示

#!/bin/sh
CONFIG_NUMBER="$1"
cp /config_file$CONFIG_NUMBER /file_to_use
reboot

如果我直接从机器上的命令行使用它并手动传入变量,该脚本是正确的并且可以工作,但是当从Javascript 系统会重新启动,但不复制文件。我省略了一些调试代码和异常代码,例如检查$1是否不为空,但这似乎不是问题所在。任何帮助都非常感谢。

也许尝试在副本和重新启动之间添加"同步",以防文件系统无法正确刷新......

尝试删除 reboot 命令并使用此命令代替您的行:

cp /config_file$CONFIG_NUMBER /file_to_use 2> error_copy.log

这将尝试复制文件,如果有任何错误,它会将它们输出到 error_copy.log..

我怀疑您的系统上可能未正确配置文件/目录写入权限。换句话说,问题是,如果复制文件的用户有权这样做。

解决了这个问题。bash 脚本必须更新为使用 $QUERY_STRING 而不是 $1。然后可以解析(如果您传递多个参数)以获取所需的所有参数

#!/bin/sh
CONFIG_NUMBER=$QUERY_STRING
cp /config_file$CONFIG_NUMBER /file_to_use
reboot

注意

要使用命令行以及Javascript,您必须同时容纳$QUERY_STRING和$1等。