Ho cercato di scrivere una piccola libreria usando Thor per aiutarmi nella creazione rapida di nuovi progetti e siti. Ho scritto questo piccolo metodo:Net: Il comando sudo SSH si blocca dopo aver immesso la password
def ssh(cmd)
Net::SSH.start(server_ip, user, :port => port) do |session|
session.exec cmd
end
end
per assistermi solo nell'esecuzione di comandi rapidi su server remoti quando necessario.
Il problema è quando ho bisogno di eseguire un comando sudo sul lato remoto, lo script sembra appeso su di me. Per esempio quando si esegue questo ...
ssh("sudo cp #{file_from_path} #{file_to_path}")
La sceneggiatura mi chiederà una password
[sudo] password for user:
Ma poi il tutto hhangs dopo aver digitato in.
qualcuno dovrebbe accadere a sapere perché si blocca esattamente, e cosa posso fare per eseguire il comando sudo su un server remoto sotto Net :: SSH (o qualche alternativa)?
* Nota: Prima di suggerire, avevo inizialmente iniziato a scrivere questa libreria come una ricetta sotto Capistrano, fino a quando non incontrai Thor, e pensai che sarebbe stata una buona occasione per provarlo. Non sono contrario a dover riportare tutto a Capistrano se necessario, ma sarei davvero sorpreso se non c'è un modo semplice per eseguire i comandi sudo su un server remoto.
Sei in grado di reindirizzare la password? 'ssh (" sudo cp # {da} # {a} <"mysupass") ' – Fosco
ovviamente ho dimenticato di sfuggire alle virgolette nel commento precedente – Fosco
Ho provato questo, ma non funziona. "bash: mysupass: nessun file o directory". Si tratta di un tentativo di reindirizzare la password al prompt? In tal caso, l'idea potrebbe funzionare, ma probabilmente la sintassi è appena terminata. Vedrò cosa riesco a trovare su – joeellis