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

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

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

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

# 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を実行した後の内容を追記するなど)を追記する場合は、以下のようにする。

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

# 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