使用 Javascript 中的参数执行 bash 脚本
Execute bash script with params from Javascript
我有一些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等。
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- JavaScript执行暂时挂起页面
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 当js函数's已执行
- 哪个先执行
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- HTML表单提交时未执行外部函数
- 在Safari执行javascript之前对其进行修改
- Amd,希望确保某个东西总是最后执行
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- 递归使用 eval() 是检查程序执行的好方法吗?
- 如何做到这一点,使代码在不传递条件后执行函数
- 如何在执行此特定onclick事件时执行JavaScript函数
- 如何在从浏览缓存加载页面时执行javascript
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- Jquery:代码在rails中的页面加载时未执行
- 如何防止jQueryonclick事件中的Ruby方法在页面刷新时执行
- 使用 Javascript 中的参数执行 bash 脚本
- 在nodejs应用程序中执行bash命令(具有root权限)
- 任何从网页执行bash脚本并在执行时捕获输出的方法