Ho uby-1.9.3-p551 e rye-v0.9,12 installati
Ho fatto quanto segue:
rbox = Rye::Box.new("#{@host}")
puts rbox.cat("/tmp/restorelog.txt")
rbox.execute("ps aux | grep ruby > /tmp/ruby-process-list")
Il comando cat funziona correttamente ed elenca l'input del file Tuttavia, per il comando execute ottengo il seguente errore:
lib / rye / box.rb: 462: in `method_missing": ps aux | grep ruby> / tmp / ruby-process-list (Rye :: CommandNotFound)
Devo prima aggiungere il comando? Ho ipotizzato che il metodo execute eseguirà qualsiasi comando shell definito dall'utente
risposte:
4 per risposta № 1Prima di utilizzare il metodo execute, è necessario disabilitare safe_mode:
rbox.disable_safe_mode
Quindi, il tuo codice sarà simile a:
rbox = Rye::Box.new("#{@host}")
puts rbox.cat("/tmp/restorelog.txt")
rbox.disable_safe_mode
rbox.execute("ps aux | grep ruby > /tmp/ruby-process-list")
Come indicato nella documentazione:
Quando la modalità provvisoria è disabilitata, è possibile eseguire qualsiasi comando (indipendentemente da ciò che è definito nella whitelist) con qualsiasi argomento valido (fileglobs, tildas, ecc ...).
La parte "etc" include le pipe.