sudoをパスワード含むワンライナーで実行したい

More than 1 year has passed since last update.

概要

Capistranoっていうデプロイツールがいいよっていうので、試しに使ってたら、sudoめっちゃ使う。
しかも、設定をしないとパスワード入力でとまる… :disappointed_relieved:
ワンライナーでかければパスワードいらいのでは…と思って調べたらドンピシャな記事を見つけたので紹介します。

実行方法

echo <your_password> | sudo -S <your_command>

これだけ。
-Sオプションをつけると標準出力に吐き出されたものをパスワードとして認識してくれるらしい。

実際にやってたこと

デプロイ先のディレクトリがroot権限じゃないと作れない場所にあったので無理やり作った。

namespace :deploy do
  task :create_deploy_dir do
    on roles(:app) do
      if test " [ ! -d #{fetch(:deploy_to)} ] "
        execute "echo <passwd> | sudo -S mkdir #{fetch(:deploy_to)}"
      end
    end
  end
end
before 'deploy:starting', 'deploy:create_deploy_dir'

おわりに

sudo使えるようにするために、設定が必要なのはわかるんだけども、これデプロイするサーバ多ければ多いほどつらいよなって… :anguished:
みんなどうしてるんでしょうか?
今回ご紹介したのは力技だと思うんですが、こういう方法もあるよっていうのがあれば、ぜひ教えてください :relaxed:

参考

stackoverflow

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.