sshコマンドを用いてリモート側のファイルにローカルファイルの内容を追記する方法

今回は、sshコマンドを用いて1行(パスワードを求められたら2行)で、リモート先の特定ファイルにローカルのファイルの中身を追記する方法について記述する。
主な利用方法としては、公開鍵認証を複数受け付けるサーバに対して秘密鍵を追記させていく際に有効だろう。

で、肝心のコマンドが以下。

bash
ssh ユーザ名@リモートホスト "cat >> /追記するリモートファイルのパス" < /追記させるローカルファイルのパス

shell
# ssh root@192.168.0.240 "cat /work/test_text" root@192.168.0.240's password: test1234 # cat test_text_local test5678 # ssh root@192.168.0.240 "cat >> /work/test_text" < /root/test_text_local root@192.168.0.240's password: # ssh root@192.168.0.240 "cat /work/test_text" root@192.168.0.240's password: test1234 test5678

と、このようにファイルの内容が追記されている事がわかる。

ローカル側のコマンドの実行結果(ローカル側のファイルに対し、sedを実行した後の内容を追記するなど)を追記する場合は、以下のようにする。

bash
ローカル側で標準出力を行うコマンド | ssh ユーザ名@リモートホスト "cat >> /追記するリモートファイルのパス"

shell
# sed 's/test/AAAA/g' /root/test_text_local AAAA5678 # sed 's/test/AAAA/g' /root/test_text_local | ssh root@192.168.0.240 " cat >> /work/test_text" root@192.168.0.240's password: # ssh root@192.168.0.240 "cat /work/test_text" root@192.168.0.240's password: test1234 test5678 AAAA5678