###前提・実現したいこと
新人インフラエンジニアです。(まだ現場未経験です)
先輩から課題をいただいたのですが、どうしても自力でできませんでした。
社内の検証環境がリリース作業で使えないので、どなたか模範解答をいただけないでしょうか。
###内容
対象のログ/var/log/messagesに対して、
引数("Jul 10"とか)を指定すると、その指定したログを表示(標準出力)する。
①引数指定なしの場合は、当日のログを表示する。
②引数が2つ以上指定された時はエラーにしてスクリプトを中止(exit)。
エラーのイメージは、リターンコードとスクリプトの使い方(usage)を標準出力する。
引数の数を表す変数$#の値をif文で判定($#>2とか)してechoでエラーを返す感じ
上記①と②を実現する為、
例 Case 変数 in ←この変数に$#の値を格納すれば・・・
0) 引数が0だった時(上記①)をここに記述 ;;
1) 引数が1だったときの処理(以前の仕様)をここに記述 ;;
2) 引数が上記以外の時(上記②)をここに記述 ;;
③引数で指定した日付をgrepでmessagesのログから検索して表示するところを
指定した日付が存在しない場合は、エラーにしてスクリプトを中止(exit)。
例 grepの結果のリターンコードをif文で判定して、0以外の時にechoで
リターンコードと「指定ログは存在しません」のメッセージを標準出力する。
⑤スクリプト実行時に標準出力されるログから、error、failure、Failedの数を表示することができれば
親切なスクリプトになるかと。
例 grepで当日、又は日付指定した結果に対して、さらに上記文言をgrepし、
引っかかった行をwc -lで行数を表示
⑥スクリプトの結果をリダイレクションでファイルに記述するのも手。
上記⑤の結果をファイルにリダイレクション(>)でファイル新規作成し、
さらに当日、又は指定日付のログをそのファイルに追記(>>)する形
###試したこと
DATE="$1"
case "$1" in
tail -n 1 /var/log/messages;;
【tailで一番下の行を出力したかったのですが、できませんでした。
ログも日によっては1行じゃないので、このやり方がそもそも間違いだとは思いますが。】
[A-Z]*)
cat /var/log/messages | grep "$1";;
【これは通りましたが、パターンの指定がいまいちな気もします。】
###補足情報(言語/FW/ツール等のバージョンなど)
なにせよ今までプログラムのプの字もかじって無いですので、ちょっと課題のレベルが高すぎるのですが、いったいどうやったら出来るのか気になって仕方がないので、お時間のある方お願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/04 00:03