それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Rubyでシェルコマンド実行後のステータスコードを取得する

Rubyで外部コマンドを実行して、コマンドの実行結果をまって次のコマンドを実行したい時とか

コマンドの終了は $?.exitstatus で出力する

?> `ls /` 
=> "bin\nboot\ncdrom\ndev\netc\nhome\n"
>> $?
=> #<Process::Status: pid=8707,exited(0)>
>> $?.exitstatus
=> 0
>> 

存在しないコマンドの場合

>> `gheohgeo` 
(irb):18: command not found: gheohgeo
=> ""
>> $?
=> #<Process::Status: pid=8728,exited(127)>
>> $?.exitstatus
=> 127

コマンド終了ステータスでSSHの生死を確認してみるとか。

台数が多いとさすがに大変。Zabbixとか監視ツール入れたら楽なんだけど、そもそも、その環境を作る過程では手動で確認しなくちゃいけない。

SSHコマンドが実行できるかで、生死確認をまとめて行う

puts (1..100).map{|i|  "192.168.100.#{i}"}.map{|ip| `ssh #{ip} "pwd"`;$?.exitstatus == 0 }.size == 100

SSHでコマンドが実行できたらTrue。全台起動したらTrueです