【小技まとめ】サーバ操作編

# 概要

サーバを操作するとき、あ、こういう所があったなと思いだすための小技集。

## Sudoで、virt-managerとかを開くとき

以下のコマンドを入力することで、sudoでvirt-managerを開く事ができる。

```
sudo xauth add $(xauth -f ~/.Xauthority list | tail -1)
sudo virt-manager
```
この時、 auth: file /root/.Xauthority does not exist というエラーが出るかもしれないが、無視する。

## サーバのバージョン確認

### CentOS / RedHat Enterprise
以下ファイルを確認する。
```
cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
```

### Ubuntu
```
$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04 LTS"
```

### Debian
```
$ cat /etc/debian_version
4.0
```
### osの確認
unameコマンドを用いる
```
$ uname
Linux

```
カーネルのバージョン確認
```
$ uname -r
3.10.0-1062.12.1.el7.x86_64
```


# 一斉にpingを打つ。

## Linux版

- ネットワークセグメント：192.168.1.0/24
- pingを送る範囲（第4オクテット）：1-254
192.168.161～の部分を、指定するネットワークに変える必要がある。

```
for((i=1;i<=254;i++));do ping -c 1 192.168.161.${i};done
```

ワンライナー
高速で処理を行う事ができる。

```
( segment=192.168.161; seq 1 254 | while read i; do ( ping -c 1 -w 1 $segment.$i >/dev/null 2>&1 && echo "$segment.$i responded" )& done )
```

## Windows版

- ネットワークセグメント：192.168.1.0/24
- pingを送る範囲（第4オクテット）：1-254

192.168.161～の部分を、指定するネットワークに変える必要がある。
また、これはコマンドプロンプトでないと、起動しないので、注意する。

```
for /l %i in (1,1,254) do ping -n 1 192.168.1.%i
```

参考

https://www.dot-plus.com/pc/windows/cmd/1996/


## yumのバージョンを固定するとき。
yumnのバージョンを固定させる＆アップデートさせたくないときはversionlockを用いる。

https://tottoto.net/yum-versionlock/

また、アップデートさせないようにするには、`/etc/yum.conf`のexcludeにパッケージを指定する。

https://qiita.com/kataring/items/609fd4a55f4495a94b7d

# Telnetコマンド

ファイアウォールの設定などをした後に、対象のポートが開いているかどうかを確認する際に、Telnetコマンドを用いるといいだろう。終わったら、Ctrl + ] で抜け、さらにquitで元のプロンプトに戻ろう。

```
telnet 接続先IPアドレス ポート番号

コマンド例（以下の例だと、192.168.219.210の1443を調べてる）
telnet 192.168.219.210 1433
```

成功すると、Connected to ~~ になり、対話モードに なる。
失敗した場合は、rejectedというような表現になる。

```:成功例
[root@kachi-bigip01:Active:In Sync] config # telnet 192.168.219.210 1433
Trying 192.168.219.210...
Connected to 192.168.219.210.
Escape character is '^]'.
```
```:失敗例
[root@kachi-bigip01:Active:In Sync] config # telnet 192.168.219.210 100
Trying 192.168.219.210...
telnet: connect to address 192.168.219.210: Connection refused
```

# パケットキャプチャについて
対象のサーバに対してリクエストがきているのか、通信が来ているかどうかを確認するために、パケットキャプチャを用いよう。

`tcpdump` というコマンドを用いる。

例えば、NTPサーバへのリクエストがきているという事を確認するなら、以下コマンドを用いる。ポート名(eth0)に関しては、`ip link show`コマンドなどを用いて調べ、そのマシンにあったマシン名を用いよう。
```
tcpdump -nni eth0 port 123
```

- -i オプション
    -  インターフェース名。そのインターフェースにくるパケットを確認する。
-  -nオプション
    -  IPアドレスでの、名前解決（DNS」による）を、無視するオプション。
-  -nnオプション
    -  上の名前解決に加えて、TCPポートアドレスでの名前解決も無視する。SSH=>22、HTTP=> 80といった形になる。これがあると、表示動作が早い。
-  portオプション
    -  ポート番号を指定する。22ならSSHとか、上の123なら、NTPとか。

# ディスクの速度確認

ディスクの速度はddコマンドで測る事ができる。
```:実行コマンド
dd if=/dev/zero of=0.dat bs=16M count=256
```

以下の内容であれば、4.3GBの読み込み速度は4秒。

```:出力結果
[user1@server1 ~]$ dd if=/dev/zero of=0.dat bs=16M count=256
256+0 records in
256+0 records out
4294967296 bytes (4.3 GB) copied, 4.23372 s, 1.0 GB/s
```
これだと2秒
```:出力結果
[infadmin@eqstg-vadb-89 ~]$ dd if=/dev/zero of=0.dat bs=16M count=256
256+0 records in
256+0 records out
4294967296 bytes (4.3 GB) copied, 2.78263 s, 1.5 GB/s
```

# サーバのディスクフォーマット

サーバのハードディスクをフォーマットし、データを削除できる。
以下コマンドで、ディスク構成を事前に確認。
```
sudo fdisk -l 
```

```:実行例
Disk /dev/sda: 587.1 GB, 587127480320 bytes, 1146733360 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x00011144

デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 2048 616447 307200 83 Linux
/dev/sda2 616448 17393663 8388608 82 Linux swap / Solaris
/dev/sda3 17393664 1146732543 564669440 83 Linux
```

その後、DVDや、USB、サーバならIPMIから、UbuntuのISOをマウントし、サーバを起動させる。
ブートメニューから対象のブート方法を選択し、起動させる。

その後、cmdをデバイスファイルの個数分だけ起動させ、以下のコマンドを実行する。

```:ターミナル1
sudo shared -n 3 /dev/sda -v
```
```:ターミナル2
sudo shared -n 3 /dev/sdb -v
```
```:ターミナル3
sudo shared -n 3 /dev/sdc -v
```
`sd*`で実行する事も可能ではあるが、デバイスファイルの分だけ並列して実行できるため、
終了時間が短い。
なお、`-n はランダム情報を書き込む回数`、`-vは進捗`を表す。