簡體   English   中英

使用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等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM