sshユーザーの変更とコマンドの実行

sshユーザーの変更とコマンドの実行

私のスクリプトのコマンドは次のとおりです。

ssh -i $KEY $USER@$HOST "sudo su tom; echo $DATA >> /home/user/file.txt

これらのコマンドは個別にはうまく機能しますが、スクリプトで一緒に使用すると中断されます。

このコマンドを単独で実行すると、sudo su tom; cat /home/user/file.txt ユーザーtomをログアウトしたときにのみcatが実行されます。

bashスクリプトでユーザーを変更してコマンドを実行するには?

ベストアンサー1

Paul Calabroが提案したもの(私の考えではこれは主な問題ではないようです)に加えて、リモートコンピュータでコマンドを実行するために使用されるコマンドラインソルバー(シェル)も定義する必要があります。ローカルコンピュータとは異なるシェルがある可能性があるためです。マスター。

-tコマンドのパラメータも必要だと思いますssh

-t は擬似 tty 割り当てを強制します。これは、リモートコンピュータ上で任意の画面ベースのプログラムを実行するために使用することができ、これは、例えばメニューサービスを実装する場合に有用である。複数の -t オプションは、ssh にローカル tty がない場合でも tty 割り当てを強制します。

以下はあなたが探しているものに近いものです。

ssh -it $KEY $USER@$HOST 'sudo su tom; echo $DATA >> /home/user/file.txt; bash'

残念ながら、上記のソリューションではsudo su&&の "concat"はechoまだ機能しませんが、コマンド-c引数を使用するとsu問題が解決します。

-c, --command=COMMAND 単一の COMMAND をシェルに渡すには、-c を使用します。

おすすめ記事