SSH 接続先にログインした状態で文字列展開等を使う
今まで esa.io を使っていたけど、色々あって解約することにしたのでブログにコンテンツを移していくことにした。 外部に出すこともできないものもあるため精査しつつ定期的に移していく。
目的
SSH でログインした先のホストで for in を使ってシェルを実行したかった。
#!/usr/bin/bash ssh TARGET_HOST "for host in `cat hosts.txt`; do echo $host; done"
雰囲気としてはみたいな事がしたかった。 実際は上記方法ではシェルスクリプトの実行時に展開されてしまうのでダメだった。
内容
対応方法としては、ssh 後に実行する処理だけスクリプトにして、bash の -s オプションで読み込むので大丈夫だった。
#/use/bin/bash for host in `cat hosts.txt`; do echo $hosts done
$ ssh TARGET_HOST "bash -s" < echo_hosts.sh