0
我正在運行一個用於從用戶獲取文件(上載)的sinatra web應用程序。然後它通過scp將文件傳輸到服務器。我可以從params Hash中獲取文件名,並將其設置爲環境變量並將其傳遞給scp命令。以下是我的代碼片段。在ruby中設置環境變量並將其傳遞給shell
ENV[file] = params['arne_site_file'][:filename]
transfer = `scp -i /opt/zabbix-proxy/etc/.ssh/id_rsa $file [email protected]:/home/zabbix/ARNE_5216_files`
PARAMS散列是 -
{
"arne_site_file" => {
:filename => "ARNE_SITE__BB5216_L16B_936441_HWY_54_A.xml"
},
"submit" => "Validate File"
}
您還應該在命令'「$ file」'中引用擴展,以允許所有有效的文件名。 – chepner
不過,一個更好的解決方案是使用類似'Kernel.spawn'的東西,它可以讓你直接傳遞參數,而不是依賴shell從它的環境中提供參數。 – chepner