HackerzLab.博多 Vol.21 子供向けLinuxハンズオン資料（Windows版）

# HackerzLab.博多 Vol.21 子供向けLinuxハンズオン

2019/05/05(日) HackerzLab.博多 Vol.21 子供向けLinuxハンズオンの資料（Windows版）です。

**（x-0.はWindows版のみでの作業です。）**

## 1. 事前準備

### 1-0. デスクトップに[コンピュータ]アイコンを表示

デスクトップ上で右クリックし、**[テーマ]**画面の右側にある**[デスクトップ アイコンの設定]**をクリックします。
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262326/573caacb-b815-830c-ee1b-802b1484dac1.png width=70%>

**[デスクトップ アイコンの設定]**画面で、**"コンピュータ(M)"**に**チェック**を入れ、
**[OK]ボタン**をクリックします。


<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262326/e7938e06-cf03-dfe6-bb95-6497177dc728.png width=50%>


### 1-1. ターミナル画面を開く

**[スタート]メニュー** ==> "ここに入力して検索"
**"powershell"** または **"cmd"** と入力し、以下のコマンドを入力

または、
**[スタート]メニュー** ==> **[Windows システムツール]** ==> **[コマンド プロンプト]**
**[スタート]メニュー** ==> **[Windows システムツール]** ==> **[PowerShell]**

**「Windows PowerShell」ウインドウ**または**「コマンド プロンプト」ウインドウ**が表示されます。
表示されたこのウインドウを、この後の説明では**「ターミナル画面」**と呼ぶことにします。

<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262326/835e0de9-a05f-4edc-2452-bc1dccef0453.png width=50%>

## 2. Linuxサーバとの通信

### 2-1. ハンズオン用Linuxサーバとの通信の確認

**ターミナル画面**で、以下のコマンドを入力します。

```
PS C:\Users\xxxx> ping ubuntu1804

ubuntu1804 [192.168.xxx.xxx]に ping を送信しています 32 バイトのデータ:
192.168.xxx.xxx からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.xxx.xxx からの応答: バイト数 =32 時間 =1ms TTL=64
192.168.xxx.xxx からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.xxx.xxx からの応答: バイト数 =32 時間 <1ms TTL=64

192.168.xxx.xxx の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 1ms、平均 = 0ms
```

### 2-2. 共有フォルダへの接続（ネットワークドライブの割り当て）

デスクトップ上の**「PC」**を右クリックし、**[ネットワークドライブの割り当て]**をクリックし、以下のように入力します。

ドライブ(D):   z:
フォルダー(O): \\\ubuntu1804\s??

**s??**は、各自に割り当てられた**番号**を入力してください。
**"別の資格情報を使用して接続する(C)"**にもチェックを入れておきます。

<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262326/523a5b39-8708-8c26-3de5-92b1f916dbb7.png width=50%>

各自に割り当てられた**ユーザー名**と**パスワード**を入力します。
（画面では**s19**になっていますが、そのまま真似しないこと！！）

**資格情報を記憶する**にも**チェック**を入れておきます。

<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262326/209176b5-c10f-ae99-5a8f-1bde5a42e54d.png width=50%>

|項目|入力値|
|---|---|---|
|名前|s??|
|パスワード|s??|

ネットワークドライブの接続に成功すると、Linuxサーバ上の各自のホームディレクトリの内容が表示されます。最初は何も入っていません。

<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262326/d5e74752-584f-fba3-8b6e-3d94a0359e50.png width=70%>

**[ファイル名拡張子]**および**[隠しファイル]**にチェックを入れると、表示されていなかったファイルやサブディレクトリ（フォルダ）が拡張子付きで表示されます。

<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262326/6243ec80-3f4c-3c91-7fca-bab4c121a90d.png width=70%>

## 3. telnet/sshでのログイン

### 3-0. TeraTermのインストール

以下の記事を参考に、**TeraTerm**をインストールします。

（全員で一斉にダウンロードすると回線が混み合う場合があるので、インストールする**TeraTerm**のパッケージは、講師側から配布される場合があります。）

**Tera Term（テラターム）をインストールしてみよう！**
https://www.j-oosk.com/teraterm/install/42/

インストールが終わったら、下記の記事を参考に背景色や文字色を変更しておきましょう。
（今回のハンズオンでは、専用ログイン・スクリプトの関係で、背景色を黒、文字色を白、緑、水色、黄色などの明るい色にすることをおすすめします。）

**Tera Termの環境設定－文字色・背景色の変更**
https://www.j-oosk.com/teraterm/configuration/86/

もしくは、講師側から設定変更後の**teraterm.ini**を配布してもらいましょう。

### 3-1. telnetでのログイン

デスクトップ上の**[TeraTerm]**のアイコンをダブルクリックし、**TeraTerm**を起動します。
**[ファイル(F)]** ==> **[新しい接続(N)...]** をクリックします。

ホスト名の欄には、接続先Linuxサーバの**ホスト名**または**IPアドレス**を入力します。
サービル欄では、**Telnet**を選択しておきます。

入力が終わったら、**[OK]ボタン**をクリックします。

<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262326/c3c6208b-660a-fcc3-96c7-cc8081045d07.png width=50%>



**telnet**接続に成功すると、以下のようなメッセージが表示されますので、各自に割り当てられた**ユーザー名**および**パスワード**を入力します。

```
Ubuntu 18.04.2 LTS
ubuntu1804 login: s??   <--- ユーザー名を入力
Password:               <--- パスワードを入力（表示されない）
```

ログイン後の画面の例
<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262326/903bc018-3e11-c7e7-ad1c-f64f97e0f8c0.png width=70%>


ログアウトする場合は、**exitコマンド**を実行します。

```
s19@ubuntu1804:~$ exit
```


### 3-2. sshでのログイン

デスクトップ上の**[TeraTerm]**のアイコンをダブルクリックし、**TeraTerm**を起動します。
**[ファイル(F)]** ==> **[新しい接続(N)...]** をクリックします。

ホスト名の欄には、接続先Linuxサーバの**ホスト名**または**IPアドレス**を入力します。
サービル欄では、**Telnet**ではなく**SSH**を選択しておきます。

入力が終わったら、**[OK]ボタン**をクリックします。


<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262326/65ce3354-07d9-f544-0429-93b6c58048d7.png width=50%>

**初めて接続するサーバ**の場合、以下のような**[セキュリティ警告]ダイアログ**が表示されます。

（先生になりすました悪意ある他人のサーバではありませんので、）
気にせず**[続行]ボタン**をクリックします。


<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262326/84286bac-fcd6-ba86-cb94-f1ed85fe7da3.png width=50%>

続いて、**[SSH認証]ダイアログ**が表示されます。
各自のユーザー名およびパスワードを入力し、[OK]ボタンをクリックします。

<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262326/087ff5d1-b933-8e50-4f8b-a1ec486c1c2a.png width=50%>

ログインに成功すると、**telnet**接続後と同様のメッセージが表示されます。
作業を終えてログアウトする場合は、**exitコマンド**を実行します。

```
s19@ubuntu1804:~$ exit
```


## 4. Linuxコマンドで遊んでみよう

### 4-1. slコマンドを実行してみる

ログインしたら、とりあえず**slコマンド**を実行してみましょう。
何かが画面上を走ります(笑)

```
s19@ubuntu1804:~$ sl
```


### 4-2. ディレクトリ（フォルダ）の中身を見てみる

ディレクトリ（フォルダ）の内容を表示するには、**lsコマンド**を使用します。
まだ何もファイルは作成していないので、何も表示されずに次のプロンプトが表示されます。

```
s19@ubuntu1804:~$ ls
s19@ubuntu1804:~$
```


**lsコマンド**の後ろに**"-al"**を付けて実行すると、「.」で始まるファイル名およびディレクトリ名を含めて出力し、さらに**アクセス権**や**所有者名、サイズ、修正時刻**などの詳細情報も表示されます。

```
s19@ubuntu1804:~$ ls -al
合計 52
drwxr-xr-x  4 s19  students  4096  4月 23 11:12 .
drwxr-xr-x 26 root root      4096  4月 23 07:54 ..
-rw-------  1 s19  students    31  4月 23 10:56 .bash_history
-rw-r--r--  1 s19  students   220  4月 23 07:54 .bash_logout
-rw-r--r--  1 s19  students  3771  4月 23 07:54 .bashrc
drwx------  2 s19  students  4096  4月 23 09:49 .cache
-rwxr-xr-x  1 s19  students 19331  4月 23 07:54 .fd2rc
drwx------  3 s19  students  4096  4月 23 09:49 .gnupg
-rw-r--r--  1 s19  students   807  4月 23 07:54 .profile
```

**2-2. 共有フォルダへの接続**の時と同じように、非表示だったファイルが表示されました。


### 4-3. ファイルを作ってみる

**catコマンド**に続いて、**> ファイル名** と入力すると、
キーボードから入力した内容をファイルに書き出すことができます。

```
s19@ubuntu1804:~$ cat > test.txt
aaa
bbb
ccc
12345
    <--- 入力が終わったら、CTRL + D と入力する
```

**catコマンド**では、ファイルの内容を表示することもできます。

```
s19@ubuntu1804:~$ cat test.txt
aaa
bbb
ccc
12345
```

ファイルの内容が表示されたら、Windowsの**ネットワークドライブ(Z:)**を開いてみましょう。
さきほど作成した**test.txt**が表示されているはずです。


<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262326/64824d7c-764d-942d-47e3-196769a259fa.png width=50%>

**test.txt**をダブルクリックして、テキストエディタで開いてみましょう。
（ただし、**メモ帳**では、改行がうまく表示されません）

<img src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262326/5c1e05f2-cb21-0505-04dd-d67109c49b6c.png width=50%>


### 4-4. ファイルを消してみる

**rmコマンド**を使うと、ファイルを削除することができます。

**rm test.txt**と入力してみてください。

```
s19@ubuntu1804:~$ rm test.txt
```

続いて、**ls -al**コマンドでファイルの一覧を表示してみます。
**test.txt**が表示されなくなっているはずです。

```
s19@ubuntu1804:~$ ls -al
合計 52
drwxr-xr-x  4 s19  students  4096  4月 23 11:25 .
drwxr-xr-x 26 root root      4096  4月 23 07:54 ..
-rw-------  1 s19  students    31  4月 23 10:56 .bash_history
-rw-r--r--  1 s19  students   220  4月 23 07:54 .bash_logout
-rw-r--r--  1 s19  students  3771  4月 23 07:54 .bashrc
drwx------  2 s19  students  4096  4月 23 09:49 .cache
-rwxr-xr-x  1 s19  students 19331  4月 23 07:54 .fd2rc
drwx------  3 s19  students  4096  4月 23 09:49 .gnupg
-rw-r--r--  1 s19  students   807  4月 23 07:54 .profile
```

Windowsのネットワークドライブ(Z:)を開いてみましょう。
ネットワークドライブ(Z:)からも、**test.txt**が消えているはずです。


### 4-5. 他のユーザーにメッセージを送ってみる

**whoコマンド**を実行すると、同一のサーバにログインしているユーザーの一覧を確認することができます。

**ログイン名（ユーザー名）**のほかに、**端末番号、ログイン時刻、ログイン元のIPアドレス**なども表示されます。

```
s19@ubuntu1804:~$ who
s19      pts/0        2019-04-23 11:10 (192.168.xxx.xxx)
s00      pts/1        2019-04-23 11:34 (192.168.xxx.xxx)
s01      pts/2        2019-04-23 11:35 (192.168.xxx.xxx)
```

**mesgコマンド**で、現在のメッセージの受付可否を確認します。

```
s19@ubuntu1804:~$ mesg
有効になっています
```

もし、無効と表示された場合は、

```
s19@ubuntu1804:~$ mesg y
```

と入力して、有効にしておきます。

それでは、ほかのユーザーにメッセージを送ってみましょう。
メッセージを送信するには、**writeコマンド**を実行します。

```
s19@ubuntu1804:~$ write s01     <-- writeに続いて、送信相手のログイン名を入力する
Hello!!
I am s19.
todoki masita ka??
    <--- 入力終了（CTRL + D と入力する）
```

送信先の**s01**さんの画面では、以下のようなメッセージが表示されます。

```
Message from s19@ubuntu1804 on pts/0 at 11:46 ...
Hello!!
I am s19.
todoki masita ka??
EOF
```

### 4-6. 他のユーザーとチャットしてみる

**writeコマンド**では、自分から相手にしかメッセージを送れませんでしたが、
**talkコマンド**を使用すると、お互いに同時にメッセージを送受信することができます。

２人ずつペアを組み、**talkコマンド**に続いて相手のログイン名を指定して実行してみてください。


* Aさんの入力例

```
s01@ubuntu1804:~$ talk s19
```

* Bさんの入力例

```
s19@ubuntu1804:~$ talk s01
```

**talkコマンド**の**Connection**が確立されると**[Connection established]**という文字列が画面上に表示されます。

画面が上下に２分割され、相手からのメッセージを表示しながら、相手に送るメッセージを入力・送信することができます。

**talkコマンド**を終了する場合は、CTRL + C と入力してください。


## 5. 後片付け

デスクトップ上の**[PC]**のアイコンを右クリック ==> **"ネットワーク ドライブの切断(C)"**

で、ネットワークドライブ(Z:)の割り当てを解除しておきましょう。