その他

Debian運用での話題

Debianを運用していて必要となるさまざま話題について。

HDDのマウント設定

HDDをフォーマットして、mountコマンドで動作確認して、

mount /dev/sdb1 /home/s1

問題なければシステム起動時に自動マウントさせるためには、/etc/fstab ファイルに設定します。 たとえば、

/dev/sdb1 /home/s1      ext3    defaults        0       0

次のWebサイトの情報を参考にしました ここから

HDDの消去コマンド

10MBのブロックサイズでゼロを書き込む # dd if=/dev/zero of=/dev/hda bs=10MB

もしくは 乱数を2回書き込んだ後,ゼロフィルを実行 # shred -n 2 -z /dev/hda

HDDの修復コマンド(fsck)

HDDを修復する方法

起動中のHDDはfsckコマンドで修復できません。アンマウントして修復できるような環境で実行します。

ディスクの確認 # fdisk -l

HDDのアンマウント # umont /dev/xxxx   (デバイス名)

修復 # fsck -v -y /dev/xxxx  (デバイス名)

 

VNCサーバー

vnc4serverをインストールする場合

1)apt-get install vnc4server  もしくは aptitude -y install vnc4server

2) /etc/vnc.conf を新規作成し、以下の設定を追加

$geometry = "2048x1024";

$depth = "24";

3) suになるか sudoコマンドでVNCパスワード作成

vncpasswd

4) .vnc/xstartup に Gnomeセッションの起動スクリプト追加

exec gnome-session &

5) VNCサーバーの起動  vncserver :1    停止 vncserver -kill :1

 

Debian 8 (jessie)の場合、GNOMEではVNCサーバーに接続エラーが起きるので、GUI環境をGNOME2ベースのMateを使用します。

詳細は ここを参照

 

XRDPをインストールする場合

Debian 9 Stretch GNOMEデスクトップ もしくは Mateデスクトップ

最初に xserver-xorg-legacy を削除するとGNOMEでもXRDPが実行できました。バグのようですが、詳細は、https://unix.stackexchange.com/questions/389005/using-xrdp-without-local... にて。

# apt-get purge xserver-xorg-legacy

# apt -y install xrdp

# systemctl start xrdp

# systemctl enable xrdp

Windowsのリモートデスクトップ接続で、セッションに [Xvnc] を選択し、ユーザー名とパスワードを入力し接続します。

Debian 10 Buster の場合、GNOME環境をtaskselで選択インストールすると、サスペンドやスリープなどのPC環境をサポートする機能も含めてインストールされ、サーバーとして使うには、20分ぐらいで電源が落ちたり、不要な機能がありましたので、taskselコマンドで、デスクトップ環境、GNOME環境をアンインストールして、再起動後に、taskselコマンドで、デスクトップ環境とMateだけを選択してインストールしてから再起動します。

その後、xrdpをインストールしてもつながらない場合は、 ここを参考に https://www.hiroom2.com/2017/06/19/debian-9-xrdp%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B/#sec-1

「could not acquire name on session bus」のエラーが表示される場合は、/etc/xrdp/startwm.sh を編集します。

exec mate-session (これを挿入)

test -x /etc/X11/Xsession && exec /etc/X11/Xsession (これは元から)
exec /bin/sh /etc/X11/Xsession (これは元から)

起動時に「Could not acquire name on session bus」が表示される場合は、mate-sessionの起動前に

unset DBUS_SESSION_BUS_ADDRESS

を挿入してXRDPを再起動して改善しました。 詳細は http://verifiedby.me/adiary/0126

 

Debian 10 での設定サンプル /etc/xrdp/startwm.sh

最後の行あたりは、以下のように設定します。

unset DBUS_SESSION_BUS_ADDRESS
exec mate-session

test -x /etc/X11/Xsession && exec /etc/X11/Xsession
exec /bin/sh /etc/X11/Xsession

 

ネットワークコマンド

digコマンドやnslookupコマンドが使えない場合は、追加インストールします。

  • apt-get install net-tools
  • apt-get install dnsutils

 

ファイル転送

rcp コマンド

リモートホストからローカルホストへコピー

リモートホストの「example.com」にユーザー名「user1」でログインし、「file1」というファイルをローカルホストへ「file2」という名前でコピー

リモート間でファイルのコピー

オプション

  • -p コピー元の更新日時、アクセス権の情報もコピーする
  • -r コピー元のディレクトリ内のファイルをすべてコピーする

scp コマンド

暗号化してファイル転送

scp [オプション] コピー元 コピー先

主なオプションは 

  • -C 通信を圧縮する
  • -i 秘密鍵ファイル RSAまたはDSA認証の秘密鍵ファイルを指定する
  • -P ポート番号 ポート番号を指定する
  • -p オリジナルファイルの更新時間とモードを維持する
  • -r ディレクトリ内を再帰的にコピーする
  • -v プログレス情報を表示する
  • -1 SSH1を使用する
  • -2 SSH2を使用する
  • -4 IPv4を使用する
  • -6 IPv6を使用する

リモートホストからローカルにファイルをコピー、ひとつのファイル「/home/user/file1」をコピー

  • scp user@192.168.10.1:/home/user/file1 ~/tmp

ローカルからリモートホストにファイルをコピー

scp コピー元ファイル ユーザ名@リモート・ホスト名:/リモート先のPATH

  • scp ~/tmp/file1 user@192.168.10.1:/home/user/tmp/

リモートホストから別のリモートホストにファイルをコピー

scp user1@192.168.10.1:/home/user/tmp/file1 user2@192.168.10.2:/home/user/tmp/

 

 

パーティションの変更

HDDのDiskからDiskへのコピーなどでパーティションサイズを拡大させたい、結合させたいときに、Gpartedプログラムを使います。

Diskに未割当の領域があり、それを、既存のパーティションに結合させる手順

  1. 作業は、LiveLinuxか別のLinuxにHDDを接続して、ブートOSではないHDD状態で作業します。
  2. Gpartedを起動して、該当するHDDを選択
  3. Extendedの拡張領域を拡大、全域(できれば若干余裕領域を残す)にすることで未割当領域を拡張領域に含める
  4. スワップ領域を最後(未割当の後)に移動させる
  5. Extendedの拡張領域をスワップサイズに縮小、スワップの後の空き領域がゼロ(0)にする
  6. 既存パーティションを選択して、リサイズする、拡大させt、前方と後方がともにゼロ(0)にする
  7. これで既存パーティションが拡大

パーティション変更を実行(保留を実行)させると、Linuxブートなどのワーニングが表示されますが、とりあえず実行します。

詳細は ここ を参考にしました 

 

Debian パッケージのインストールツール

tasksel コマンド  GUI環境や初期デスクトップ環境をインストール・アンインストールするのに便利です。

 

 

 

PINGでサーバーの監視スクリプト

参考にしたサイト: https://qiita.com/nkojima/items/e9a851e40ef8e2af9993

#!/bin/bash

IP_LIST=(172.17.12.143 172.17.11.130 172.17.15.81 172.17.15.82)
MAILTO='送信先のメールアドレス'
LOG_FILE=./ping.log

for ip in ${IP_LIST[@]}
do
  ping_result=$(ping -w 5 $ip | grep '100% packet loss')
  date_result=$(date)

  if [[ -n $ping_result ]]; then
    echo "[SEVERE] server inactive: $ip $date_result" >> $LOG_FILE
    echo $ip | mail -s "[ALERT] server down!! $date_result" $MAILTO
  else
    echo "[INFO] server active: $ip $date_result" >> $LOG_FILE
  fi
done

 

 

オープンソースソフトウェア: