次のような単一のコマンドが必要です。
- 設定した公開鍵を使用して、ユーザーfooとしてサーバーにsshします
- /etc/mysql/debian.cnf defaults-file を使用してデータベースの mysqldump を実行します
- stdout に送信するので、ローカルでパイプできます
- ユーザー foo は /etc/mysql/debian.cnf の読み取りを許可されていないため、リモートでサーバー上で sudo を実行している間。foo は sudo bash を許可されていますが、sudo mysqldump は許可されていません。
これは私が思いついた最高のものです:
echo 'mysqldump --defaults-file=/etc/mysql/debian.cnf dbname' | ssh -t -i keys/id_rsa -l foo example.com sudo bash -s
この醜い獣は機能しますが、生成します: Pseudo-terminal will not be allocated because stdin is not a terminal.
、そして私はエコーが本当に好きではありません。もっと良い方法があるはずですか?