Posted at

SSHで一気にコマンドいろいろ投げたい

More than 1 year has passed since last update.


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で入って同じコマンド投げるの大変なときや、インスタントに投げるのに使える。窓たくさん開きたくない。