LoginSignup
63

More than 5 years have passed since last update.

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

Posted at

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
63