sudoユーザーに切り替えてから、SSHを使用してリモートサーバーでコマンドを実行する必要があります。
実際のコマンド
docker stats --no-stream --format "\"{{ .Name }}\^C{\"memory\":{\"raw\":\"{{ .MemUsage }}\",\"percent\":\"{{ .MemPerc }}\"},\"Node\":\"{{ \"`hostname -i`\" }}\",\"cpu\":\"{{ .CPUPerc }}\"},"
SSHでも実行できます。
ssh 1.2.3.4 'docker stats --no-stream --format "\"{{ .Name }}\^C{\"memory\":{\"raw\":\"{{ .MemUsage }}\",\"percent\":\"{{ .MemPerc }}\"},\"Node\":\"{{ \"`hostname -i`\" }}\",\"cpu\":\"{{ .CPUPerc }}\"},"'
しかし、sudo su - core -cに渡そうとすると、「パターン一致」のため動作しません。このコマンドを正しくラップするにはどうすればよいですか?
sudo su - core -c 'ssh 1.2.3.4 'docker stats --no-stream --format "\"{{ .Name }}\^C{\"memory\":{\"raw\":\"{{ .MemUsage }}\",\"percent\":\"{{ .MemPerc }}\"},\"Node\":\"{{ \"`hostname -i`\" }}\",\"cpu\":\"{{ .CPUPerc }}\"},"''
答え1
1つの解決策は、最初に実行してsudo su - core
ユーザーを変更してからコマンドを実行することです。その後、exit
元のユーザーに戻るために書くだけです。しかし、あなたは気の利いた言葉が欲しいと思います。この場合、これはうまくいくと思いますが、残念ながらテストすることはできません。
sudo su - core -c ssh\ 1.2.3.4\ 'docker stats --no-stream --format "\"{{ .Name }}\^C{\"memory\":{\"raw\":\"{{ .MemUsage }}\",\"percent\":\"{{ .MemPerc }}\"},\"Node\":\"{{ \"`hostname -i`\" }}\",\"cpu\":\"{{ .CPUPerc }}\"},"'
答え2
ここではドキュメントで動作します。
sudo su - core << 'END_SUDO'
ssh self << 'END_SSH'
docker stats --no-stream --format '"{{ .Name }}{"memory":{"raw":"{{ .MemUsage }}","percent":"{{ .MemPerc }}"},"Node":"{{ "'"$(hostname -i)"'" }}","cpu":"{{ .CPUPerc }}"},'
END_SSH
END_SUDO