• ベストアンサー

シェルスクリプトでsshの初回ログイン処理をしない

以下のような処理はシェルスクリプトで実装可能でしょうか。 【host.txt】 aaaホスト bbbホスト cccホスト 【test.sh】 for (【host.txt】の一覧) {  if (ホストに対してAre you sure you want to continue connecting (yes/no)?と聞いてきた) {   # ssh初回ログイン時  } else {   # ssh初回ログインではない  } }

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.4

No1です。 回答に書いたとおり、-o StrictHostKeyChecking=no というのは、あくまで、 >sshの初回接続したホストで処理を止めずに次のホストに対して処理を実行したいということです。 というNo2の補足に対してのものです。 初回ログインと二回目以降のログインを判断したいと言うことなら、No2の方の回答くらいしか無いと思います。 あるいは、初回ログイン時に、サーバー側に目印のファイルを作るなりして、それの有無を判断するか。

green64
質問者

補足

目印のファイルを作成して、それを確認するのは難しいです。 なので、No2の方の方法で試してみようと思います。

その他の回答 (3)

  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.3

No1です。 >sshの初回接続したホストで処理を止めずに次のホストに対して処理を実行したいということです。 質問文からは上記は全く読み取れませんね。 途中で止めたくないと言うことなら、ssh に、-o StrictHostKeyChecking=no というオプションをつけると聞いてきません。

green64
質問者

補足

sshに「-o StrictHostKeyChecking=no」を付けた場合を 試していないため憶測ですが、 以下のif文の条件に戻り値等を指定できるのでしょうか? if (条件) {  # ssh初回ログイン時 } else {  # ssh初回ログインではない } 上記の場合だと初回ログイン時は処理を中断して次のホストに処理が進むため 判定できない気がします。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

host.txtに列挙されているホスト名が~/.ssh/known_hosts 内にあるかどうか…で、過去に接続したことがあるかどうかは判定できると思われますがどうですかね? もっとも、ホスト側の鍵ファイルが変更されていたらその限りではありませんが。

green64
質問者

補足

No1の捕捉にも書きましたが、 sshの初回接続したホストで処理を止めずに次のホストに対して処理を実行したいということです。

  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.1

>ホストに対してAre you sure you want to continue connecting (yes/no)?と聞いてきた これはどういう意味ですか?

green64
質問者

補足

説明不足でした。 シェル内でコマンド「ssh host」と実行した場合に初回接続で上記の質問が返ってきます。 シェルを自動実行し、途中で処理を止めずに最後まで実行したいため、 質問が返ってきた場合に次の処理を実行するということです。

関連するQ&A

専門家に質問してみよう