[Shell] shスクリプトのwhile文の中でsshを実行すると1回しか実行されない件

sea-488854_1280
LINEで送る
Share on GREE
Share on LinkedIn

サーバーを扱う時にshellコマンドやshellスクリプトは必須です。

コマンドは、慣れてくるとGUIで操作するのが馬鹿らしくなってくるほど便利な事が多いことに気が付きます。
所詮GUIはCUIコマンドをマウスを使って操作するだけの事でいかに手が早く動かせるかの勝負だが、
CUIであれば、キーボードのタイピングとコマンドの知識でいかようにでも効率化できます。

そこにスクリプトを覚えれば、自分の行う処理を自動化したり、サーバーでの操作をかなり便利に行う事が用意にわかります。

トラブルの始まり

とりあえず、ここではshellスクリプトの講座を行うのではなく、以下のファイル読み込みの基本構造を使って、複数サーバー管理を行なった以前のブログでハマったので、メモっておきます。

「サーバー管理ツールを作る #1「複数サーバー管理」」

Shellスクリプトの基本

下記のプログラムで、特定のファイルを行毎に読み込み、画面に表示することができる。

応用

これを応用して、複数のサーバーに対してsshでコマンドを実行すれば、一般の管理ツールと同じ事ができると思って実行

結果

何故か1行しか結果が返ってきません。
途中でサーバーアクセスがハングしているのかとずっと思って悩んでいたら、同じ事でハマった方のページを見つけ解決しました。

http://b.l0g.jp/dev/ssh-inside-while/

解決

結果

“-n”オプションをつけるとよかったんですね。
どうやらsshを実行すると、結果に対してコマンドが終了してしまうらしいので、-nオプションをつけて、/dev/nullとして、終了を阻止するという事らしいです。

この-nオプションて、何に使うのかがずっと疑問だったんですが、こういう為だったんですね。
でも、これ以外に何に使うのか?スクリプトの為のオプション??
ますます謎ですが、とりあえず、解決して安心です。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*