Ich benutze eine Sinatra Web App, die eine Datei (Upload) vom Benutzer bekommt. Es überträgt dann die Datei über scp zu einem Server. Kann ich den Dateinamen aus dem params Hash holen und ihn als Umgebungsvariable einstellen und an den scp-Befehl übergeben. Unten ist ein Ausschnitt meines Codes.Umgebungsvariable in Ruby setzen und an Shell übergeben
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 Hash ist -
{
"arne_site_file" => {
:filename => "ARNE_SITE__BB5216_L16B_936441_HWY_54_A.xml"
},
"submit" => "Validate File"
}
Sie sollten auch die Erweiterung im Befehl '" $ file "' angeben, um alle gültigen Dateinamen zu berücksichtigen. – chepner
Eine bessere Lösung ist jedoch, etwas wie 'Kernel.spawn' zu verwenden, mit dem Sie Argumente direkt übergeben können, anstatt sich auf die Shell verlassen zu müssen, um Argumente aus ihrer Umgebung zu liefern. – chepner