私はThorを使用して小さなライブラリを作成し、新しいプロジェクトやサイトをすばやく作成できるようにしています。私はこの小さな方法を書きました:
def ssh(cmd)
Net::SSH.start( server_ip, user, :port => port) do |session|
session.exec cmd
end
end
必要なときにリモートサーバーでクイックコマンドを実行するのを支援するだけです。
問題は、リモートエンドのsudoでコマンドを実行する必要がある場合、スクリプトがハングしているように見えることです。たとえば、これを実行するとき...
ssh("sudo cp #{file_from_path} #{file_to_path}" )
スクリプトはパスワードの入力を求めます
[sudo] password for user:
しかし、それを入力した後、すべてがハングします。
なぜそれが正確にハングするのか、そしてNet :: SSH(またはいくつかの代替手段)の下のリモートサーバーでsudoコマンドを実行するために私ができることを誰かが知っているでしょうか?
*注:提案される前は、トールに出くわすまで、私はもともとこのライブラリをCapistranoの下でレシピとして書き始めていたので、試してみる良い機会になると思いました。必要に応じてすべてをCapistranoに戻す必要はありませんが、リモートサーバーでsudoコマンドを実行する簡単な方法がない場合は本当に驚きます。