今からはじめるプログラミング27
・・・RPGの機能としてアイテムのプログラムを追加しようと思ってプログラム自体もほぼ描き終えていたのですが、マイニングPCも作ってみたのもあって、少しハードウェアに寄せたプログラムも作りたいな、と思考がそれていったので、そんな感じのプログラムを作ろうと考えました。
コマンドを覚えればいい。
というのもごもっともですが、僕はこういうのを覚えるのはとても苦手なので、これをグラフィカルにできないかな、とか思ったり思わなかったり?
運用監視のフリーソフトがありましたが、そんなソフトはどうなってるのか?そこまでは作る気はしませんが、仕組みを考えるのは面白そうなのでちょっとググってプログラミング。
ExecSystemCommand
---------------------------------
package sample13;package sample13;
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;
public class ExecSystemCommand {
public static void main(String args) {// String Command = { "ping", "./", "192.168.43.256" }; // 起動コマンドを指定する String[] Command = { "ls", "./", "" }; Runtime runtime = Runtime.getRuntime(); // ランタイムオブジェクトを取得する System.out.println("実行環境の取得"); //ランタイム取得 Process p = null;
try { p = runtime.exec(Command); // 指定したコマンドを実行する// p = runtime.exec("ping -c 2 192.168.43.256"); System.out.println("実行"); //実行 try { p.waitFor(); // プロセスの正常終了まで待機させる System.out.println("プロセス終了待ち"); //終了待ち } catch (InterruptedException e) { e.printStackTrace(); }
InputStream is = p.getInputStream(); // プロセスの結果を変数に格納する String enc = System.getProperty("sun.jnu.encoding");//エンコード取得 InputStreamReader isr = new InputStreamReader(is, enc); BufferedReader br = new BufferedReader(isr); // テキスト読み込みを行えるようにする System.out.println("実行結果読み込み準備"); //実行結果準備 while (true) { String line; line = br.readLine(); if (line == null) { System.out.println("実行結果がから"); //実行結果がから break; // 全ての行を読み切ったら抜ける } else { System.out.println("line : " + line); // 実行結果を表示 } }
} catch (IOException e) { e.printStackTrace(); }
}
}
------------------------------
本当はソースでコメントアウトしてあるようにpingコマンドを使用してみたかったのですが、勉強不足でmacで動かせていませんw
エラーにならないので原因がわからない・・・。
lsコマンドの実行結果は以下のとおり。
------------------------
実行環境の取得
実行
プロセス終了待ち
実行結果読み込み準備
line : ./:
line : Game.jar
line : IMG_0938.JPG
line : NoccryNolife.mp4
line : SmallRPG.png
line : SmallRPGのコピー.png
line : bin
line : bin.zip
line : border.png
line : down.png
line : end.png
line : floor.png
line : free.png
line : glass.png
line : img
line : items
line : moon.png
line : s_item.txt
line : sample13
line : sea.png
line : src
line : src.zip
line : up.png
line : wall.png
line : wave
line : wind.png
line : ど.wav
line : ぺんぎん.png
実行結果がから
------------------------
想定では、pingコマンドでマイニングPCほか自宅ネットワーク資源を監視してその状態を表示するアプリケーションを作ろうと思ってみたりしたのですが、いきなりつまづきました(涙)
インフラエンジニアとかネットワークエンジニアを目指そうと思う方は、バッチとかシェルのコマンドについて、知識が必要になってくるので、どんなコマンドをどういう場面で使うのか、など調べてみましょう。
アプリケーションエンジニアでも、システム運用ソフトのローカライズなどといった案件では、必須になってきます。プログラムのアルゴリズムをゴリゴリ描くより、コマンドを効率よく動かしていきたいというような人は、そういうプロジェクトから入るのも、ありだと思います。機器の監視とかアラームの制御とか、サービスの起動状態など、なかなか面白いプログラミングです。あと正規表現も覚えておくといいと思います。