Edited at

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

More than 3 years have 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