SSHコマンドはログインした後、exitコマンドで抜けるまでセッションがつながったままですよね。ですが実は1つコマンドを渡してその結果だけ受け取り、即自動で抜けることができるんです! 以下に方法を簡単にまとめます。
※有名な機能かもしれませんが私は知りませんでした…
コマンド例(ls -lを実行する場合)
1 |
$ ssh {ユーザ}@{IPアドレス} "ls -l" |
実行してほしいコマンドを末尾にダブルクォーテーションで囲んで付けてあげます。
一緒にお勧めされることが多いが使わないほうがいいオプション
下記オプションを加えることで、接続先が初めてでもフィンガープリントを控えるか確認をさせない挙動になります。
毎度初めてのノードに接続する且つそのノードは確実に悪意を持たないというような特殊な環境でもない限りフィンガープリントは控えるべきです。
1 |
-o StrictHostKeyChecking=no |
knownhostの書き込み先を/dev/null(書き込まれても破棄する)とするオプションです。これでは元の目的であるマシンのなりすましを検出できません。
1 |
-o UserKnownHostsFile=/dev/null |
本機能を使うアイディア
下記をバッチ化して定期実行するのに使えるかと思いました。
- ノードのディスク容量を確認する
- ファイルを取得する(“cp hoge fuga”的な)
- 各ノードから特定のマシンにpingさせる
- 疎通確認する
以上!