###memo
パスなしSSHログインできるよう準備が必要。(そこは略)
sample1
ssh user@hostname1 "mkdir /tmp/dir"
コマンドのecho出ないし標準出力に吐くコマンドじゃないと正常終了かどうかわかりにくい。(なのでSSHしたらhostnameを打っておく。)でもエラーの時はメッセージ出る。
複数のコマンドを一気に投げたい場合。(シェルスクリプトを作成してscpで飛ばして実行でもよいけど)
testも書ける。
sample2
-bash $ ssh user@hostname1 <<EOC
hostname
cd /tmp
if [ -d dir ]; then
rm -rf dir
fi
mkdir dir
EOC
sample2-1
-bash $ ssh user@hostname1 "cd /tmp;rm -rf dir;mkdir dir"
複数のコマンドを複数ホストに一気に投げたい場合はforで回す。
sample3
#!/bin/bash
HOSTS="hostname1 hostname2 hostname3"
for i in ${HOSTS}; do
ssh user@$i <<EOC
hostname
cd /tmp
if [ -d dir ]; then
rm -rf dir
fi
mkdir dir
EOC
done
sudoを使おうとすると怒られる(sudoの設定による)ときは -t を使う。
sample4
ssh -t user@hostname1 "sudo mkdir /tmp/dir"
###これなに?
サーバいっぱいでSSHで入って同じコマンド投げるの大変なときや、インスタントに投げるのに使える。窓たくさん開きたくない。