👋

[SadServers] 解説 "Santiago": Find the secret combination

2023/01/04に公開

"Santiago": Find the secret combination

SadServersの "Santiago": Find the secret combination の解説です。

SadServers って何? って人は、 SadServers解説 を見てください。
一言でいうと、LeetCode (コーディング問題集) の Linuxサーバ設定版のようなものです。

問題

Scenario: "Santiago": Find the secret combination

Level: Easy

Description: Alice the spy has hidden a secret number combination, find it using these instructions:

アリスが隠した秘密の数字の組み合わせは、以下の手順で見つけてください。

  1. Find the number of lines where the string Alice occurs in *.txt files in the /home/admin directory

/home/adminディレクトリの*.txtファイルで、Aliceという文字列が出現する行数を探す

  1. There's a file where "Alice" appears exactly once. In the line after that ocurrence there's a number.

あるファイルに "Alice "が一度だけ登場します。その一回の後の行に数字があります。

Write both numbers consecutively as one (no new line or spaces) to the solution file (eg if the first number from 1) is 11 and the second 22, you can do echo -n 11 > /home/admin/solution; echo 22 >> /home/admin/solution).

解答ファイルに両方の数字を1つずつ(改行やスペースを入れずに)連続して書きます(例えば、1)からの数字が11で2)が22の場合、 echo -n 11 > /home/admin/solution; echo 22 >> /home/admin/solution とします)。

Test: Running md5sum /home/admin/solution returns d80e026d18a57b56bddf1d99a8a491f9(just a way to verify the solution without giving it away.)

Time to Solve: 15 minutes.

OS: Debian 11

解説

まず、 /home/adminに移動して、*.txt ファイルを確認する。

admin@ip-172-31-37-223:/$ cd /home/admin/
admin@ip-172-31-37-223:~$ ls *.txt
11-0.txt  1342-0.txt  1661-0.txt  84-0.txt

*.txtファイルは4つある。4つなので、1ファイルずつgrepしてもいいのだが、 xargsでまとめて実行する。
grep-cオプションはマッチしたカウントを表示する。

admin@ip-172-31-37-223:~$ ls *.txt | xargs grep -c Alice
11-0.txt:398
1342-0.txt:1
1661-0.txt:12
84-0.txt:0

Aliceの出現数の合計は 398 + 1 + 12 + 0 = 411。 これが 1) の解答。

次に、出現回数が1回である 1342-0.txtを less で表示して、 / + Alice で、 Aliceの行まで移動する。

# less 起動後、 /  Alice "Enter" を実行。
admin@ip-172-31-37-223:~$ less 1342-0.txt 

                                Alice
                        156 CHARING CROSS ROAD
                                LONDON

Aliceの次の行に156という数字を確認。これが2)の解答。

1)の解答411 と 2)の解答156を使って /home/admin/solutionを作成する。

admin@ip-172-31-37-223:~$ echo -n 411 > /home/admin/solution; echo 156 >> /home/admin/solution

最後に md5を確認する。

admin@ip-172-31-37-223:~$ md5sum /home/admin/solution
d80e026d18a57b56bddf1d99a8a491f9  /home/admin/solution

Discussion