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