Help us understand the problem. What is going on with this article?

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

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

matsudatakashi
関心ごとはC# VB.NET Java Android Javascript Shell PostgreSQL Oracle ASP.NET Hadoop Spark。 AIって流行ってるみたいだけど直前でもじもじしている。 Qiitaでポエムとか書かなくてよいと思っている。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away