LoginSignup
0
1

More than 1 year has passed since last update.

SadServersの解説: #1~#3

Last updated at Posted at 2023-06-27

※今回登場するコマンドでわからないものがあれば, 是非ChatGPTに聞いて見てください!!

1. "Saint John": what is writing to this log file?

問題

/var/log/bad/logにログを出力し続けているプロセスがあり, このプロセスを停止させよという問題.

解説

tail -f /var/log/bad.log

とすると, 確かに出力され続けるのが確認できる.

lsof /var/log/bad.log

をして, /var/log/bad.logを開いているプロセスを見つけて, PIDを取得する.

kill [PID]

でプロセスを終了させたらOK.

2. "Saskatoon": counting IPs.

問題

/home/admin/access.log内にhttpリクエストのログが取得されていて, 最も多くのリクエストを送信したIPアドレスを探せという問題.

解説

cat /home/admin/access.log

をすると, XXX.YYY.ZZZ.WWW - - 〜という行がログとして保存されていることがわかる.

cut -d ' ' -f 1 /home/admin/access.log

cutで区切り文字に空白, として-fに対して1をすることで, 各行のIPアドレスの部分だけが抽出できる.

cut -d ' ' -f 1 /home/admin/access.log | sort | uniq -c | sort

重複しているものを数えるときはuniq -cコマンドを使うが, ソートされていない出力に対して実行すると正しく値が検出できないため, 先にソートしてuniqを適用.

最後にuniqの出力結果をソートして, ケツのIPアドレスを見にいくと正解がわかる.

3. "Santiago": Find the secret combination

問題

/home/admin内の*.txtのファイルから, Aliceという単語が出現した行を探し出し,

  1. 全ファイルのAliceが出現した行数の合計
  2. 一回だけAliceが現れたファイルがあり, そのファイルのAliceの直後にある数字

1, 2の二つの数字を出力せよという問題.

回答

find /home/admin -maxdepth 1 -type f | grep .txt | xargs cat | grep Alice | wc -l

find/home/admin内のファイルをまず見つける. -maxdepth 1 とすることで, /home/adminよりも深いディレクトリは探索しないようにする.
これにxargscatを行うと, 一気に全部のファイルの中身を表示させられる.
catの出力結果をgrepして, wcでAliceが出てくる行数を表示させたら1の答えがわかる.

cat [ファイル名] | grep Alice | wc -l

さっきと同じようなAliceが出てくる行数を調べる(今回はファイル一つずつ).

catでファイルの中身を表示して, grepでAliceが含まれる行を抽出して, wcで行数を表示する. *.txtを一つずつ調べると, Aliceが出てくるのが1行しかないファイルを見つけられる.

cat [1回しかないファイル] | grep Alice -A 1

見つかったファイルに対して, grep -A [数字]を使って, 条件に一致した行の後ろの, 特定の行数分も取得できて, この結果から2の答えがわかる.

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1