グループポリシーオブジェクト内で定義されたネットワークドライブのパスを変更したい時

ドライブマップの変更でPowerShellを使って楽をしようと思い、試してみました(net use部分の一括変更です)。

手順

  1. ドメイン管理者権限でログインしているクライアント上で、管理者権限でPowerShellを起動します

  2. Group Policy Management Consoleをインストールします
    Add-WindowsFeature GPMC
  3. グループポリシーモジュールをインストールします
    Import-Module -Name grouppolicy
  4. グループポリシーオブジェクトをバックアップします
    Backup-GPO -Name グループポリシー名① -Path 出力先パス
    Backup-GPO -Name グループポリシー名② -Path 出力先パス
    Backup-GPO -Name グループポリシー名③ -Path 出力先パス
    #︙
    #(変換したい数だけ列挙)
  5. グループポリシーオブジェクト内のドライブマップパスを変更します
    出力された
    {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\DomainSysvol\GPO\User\Preferences\Drives\Drives.xml
    内の、
    path=”~~~”  を書き換えて保存します
    (変換したいポリシー数ぶん、Drives.xmlを書き換え)

  6. グループポリシーオブジェクトをインポートします
    Import-GPO -BackupGpoName グループポリシー名① -TargetName グループポリシー名① -Path ポリシーを保存したパス
    Import-GPO -BackupGpoName グループポリシー名② -TargetName グループポリシー名② -Path ポリシーを保存したパス
    Import-GPO -BackupGpoName グループポリシー名③ -TargetName グループポリシー名③ -Path ポリシーを保存したパス
    #︙
    #(変換したい数だけ列挙)

以上です。

CentOS6から7にユーザを移行してみる

CentOS6からCentOS7にユーザを移行する作業があり、方法を調べてみました。

CentOS6 6.10
CentOS7 7.7.1908
にて確認しています。

作業は全てrootユーザにて行っています。

CentOS6側

# テスト用グループ作成
groupadd -g 19999 test-group
# テスト用ユーザ作成
useradd  -g 19999 -u 19999 foo
passwd foo
bar
bar

# ユーザ追加確認
cat /etc/passwd | grep foo
# パスワード確認(ハッシュ方式確認)
#   先頭が$1ならmd5
#         $5ならsha256
#         $6ならsha512
#   ※受け側のglibcが2.7以降であれば、どの形式でもそのままコピペ可のようです
cat /etc/shadow | grep foo
# グループ追加確認
cat /etc/group | grep test

# ユーザ変更
su - foo
# テストファイル作成
touch test
# rootに戻る
exit

# ホームディレクトリのバックアップ
tar cvf foohome.tar /home/foo
# 固めたアーカイブは手元に置いておきます(あとでCentOS7側に転送します)

Centos7側

# ホームディレクトリの内容を予めCentOS7側に転送しておきます

# ホームディレクトリの内容を展開
cd /
tar xvf ~/foohome.tar
ls -al /home

# ユーザ定義のインポート
# ※データが画面上で2行に見えている場合がありますが、そのまま1行として貼り付け下さい
#

# /etc/passwd  に CentOS6側の /etc/passwd  内の foo        の行をそのまま貼り込んで保存
vipw -p

# /etc/shadow  に CentOS6側の /etc/shadow  内の foo        の行をそのまま貼り込んで保存
vipw -s

# /etc/group   に CentOS6側の /etc/group   内の test-group の行をそのまま貼り込んで保存
vigr -g

# /etc/gshadow に CentOS6側の /etc/gshadow 内の test-group の行をそのまま貼り込んで保存
vigr -s

# 移行結果確認
ls -al /home

ユーザfooでCentOS7にログインして確認ください。

以上です

Robocopyのログのサマリー部分を整形してみる

Robocopyのログのサマリー部分が見づらいので、整形してみました。

スクリプト名は、logreport.sh です(適当に直して下さい)。

#!/bin/sh

<< COMMENTOUT

2019/09/04作成

robocopyログファイル(Windows2016版)のサマリー部分の整形スクリプト
フォルダ"log"内のrobocopy*.logをUTF-8に変換し、"report"フォルダにサマリー部分を出力します
要 nkf

処理前のlogの最終部分
  ------------------------------------------------------------------------------

                       合計        コピー済み       スキップ       不一致        失敗    Extras
     ディレクトリ:        18571            0      18571         0         0         0
       ファイル:       157425       152728       4697         0         0         0
        バイト: 299399096023 292980525070 6418570953         0         0         0
         時刻:      0:15:20      0:10:48                        0:00:00   0:04:32


         速度:              451855700 バイト/秒
         速度:              25855.390 MB/分
     終了: 2019年xx月xx日 xx:xx:xx

処理後のlog
  ------------------------------------------------------------------------------

                    Total       Copied    Skipped  Mismatch    FAILED    Extras
     Dirs :         18571            0      18571         0         0         0
    Files :        157425       152728       4697         0         0         0
    Bytes :  299399096023 292980525070 6418570953         0         0         0
    Times :       0:15:20      0:10:48                        0:00:00   0:04:32


         速度:              451855700 バイト/秒
         速度:              25855.390 MB/分
     終了: 2019年xx月xx日 xx:xx6:xx

使い方
 カレントディレクトリに"log"というフォルダを作り、robocopyのログファイルを格納します
 カレントディレクトリに"report"というフォルダを作っておきます
 WSLを起動し、カレントディレクトリに移動します
 ./logreport.sh をキックします


※もともとは Powershell で作りましたが、
 処理ファイル数が多いと不安定になるようなので、
 シェルスクリプトで作り直しました

※事前に、WSLにnkfをインストールしておいて下さい

COMMENTOUT

tmpfile=$(mktemp)
tmpfile2=$(mktemp)
tmpfile3=$(mktemp)

# ログファイルの文字コードを UTF-8 にする
cd log
echo ログファイルをUTF-8化しています...
find . -name 'robocopy*.log' -type f -print0 | xargs -0 nkf -u -Lu --overwrite -w 

# ログファイルの最後の15行目を取り出し、
# ----------で始まる行以降を取り出し(ファイルが短くて-----が2行入ってしまった場合は2番目以降)
# サマリー行の全角文字を半角文字に変換する
echo ログファイルを整形出力します
for fname in `find ./robocopy*.log`
do
        echo $fname
        # 各ログファイルの末尾15行を取り出す
        tail -15 $fname > $tmpfile
        if [ `grep -c '^----------' $tmpfile` -eq 2 ] ; then
                # ^---------- が2行ある場合は、最初の行を潰す
                sed '0,/^----------/ s/^----------/xxx/' $tmpfile > $tmpfile3
                # ^---------- 以降を出力
                fname1=${fname#.\/robocopy_}
                echo ${fname1%.log} > $tmpfile2
                sed -n '/^----------/,$p' $tmpfile3 >> $tmpfile2
                rm $tmpfile3
        else
                # ^---------- 以降を出力
                fname1=${fname#.\/robocopy_}
                echo ${fname1%.log} > $tmpfile2
                sed -n '/^----------/,$p' $tmpfile >> $tmpfile2
        fi
        # サマリーの全角を半角に変換
        sed -e 's/^   ディレクトリ:/   Dirs : /g' \
            -e 's/^     ファイル:/  Files : /g' \
            -e 's/^      バイト:/  Bytes : /g' \
            -e 's/^       時刻:/  Times : /g' \
            -e 's/   合計/Total/g' \
            -e 's/ コピー済み/Copied/g' \
            -e 's/   スキップ/Skipped/g' \
            -e 's/     不一致/Mismatch/g' \
            -e 's/    失敗/FAILED/g' \
            $tmpfile2  > ../report/$fname
        done
rm $tmpfile
rm $tmpfile2

以上です。

FortiGate 6.0.x vm版のライセンス切れ対策

Hyper-V版のFortiGate 6.0.6 build0272(GA)を建ててみたところ、いきなりライセンス切れで蹴り出されてしまいました。

ということで対策してみます。

# 一旦vmを停止
execute shutdown

# vm停止を確認
# ハイパーバイザー側でvmに割り付けているNICを切断
# 切断を確認してからvmを起動

# admin でログイン
# ライセンスと設定を削除
execute factoryreset
# 再起動されます

# 再起動後、adminでログイン
# ntpの設定を削除
config system ntp
set ntpsync disable
set type custom
end
# vm停止
execute shutdown

# vm停止を確認
# ハイパーバイザー側でvmにNICを接続
# 接続を確認してからvmを起動

# adminでログイン
# IPアドレスを192.168.0.2/24 デフォルトゲートウェイを192.168.0.1にしてみる例
config system interface
edit port1
set mode static
set ip 192.168.0.2 255.255.255.0
set allowaccess [必要なサービスを半角スペースで区切って列記]
# サービスを上書きではなく追加する場合は、
# set allowaccess ではなく、
# append allowaccess [必要なサービスを半角スペースで区切って列記]
end
config router static
edit 1
set device port1
set gateway 192.168.0.1
end

これで2週間くらい遊べますね。

QNAPにZabbixを載せてみるテスト(その2:パッケージ編)

QNAPにZabbixパッケージ(バージョン4.4)を入れてみました(アプライアンス編については別記事とします)。
一部嵌まった箇所(シャットダウン時にZabbixエンジンが停止出来ず、ハングアップしたように見える)があったので、記録として残しておきます。

手順

    1. Ubuntu 18.04 LTS インストール
      snmp関係パッケージはインストール不要です。
      (Web検索で入れるように書かれているものもありますが)

    2. Ubuntu起動時のスプラッシュ画面は不要なので、grub を変更します

      vi /etc/default/grub
      GRUB_CMDLINE_LINUX_DEFAULT=”インストーラが入れた文字列”
      行を
      GRUB_CMDLINE_LINUX_DEFAULT=””
      に変更、保存、update-grub2 にて反映させます

    3. 一旦再起動

      shutdown -r now
    4. 仮想支援エージェントの導入

      apt update
      apt install -y qemu-guest-agent
    5. Apache用日本語環境の導入

      apt install -y language-pack-ja-base language-pack-ja
      localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
    6. タイムゾーン変更
      timedatectl set-timezone Asia/Tokyo
    7. 色々更新して再起動
      apt -y upgrade
      shutdown -r now
    8. Apache2の設定
      apt install -y apache2
      vi /etc/apache2/conf-enabled/security.conf
      # 25行目:変更
      ServerTokens Prod
      
      vi /etc/apache2/apache2.conf
      # 70行目:サーバー名追記
      ServerName www.example.com
      
      vi /etc/apache2/sites-enabled/000-default.conf
      # 11行目:管理者アドレス変更
      ServerAdmin webmaster@example.com
      
      # Apache2変更反映
      systemctl restart apache2
    9. Zabbixパッケージインストール
      cd ~
      wget https://repo.zabbix.com/zabbix/4.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.4-1+bionic_all.deb
      dpkg -i zabbix-release_4.4-1+bionic_all.deb
      apt update
      apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent
    10. データベース初期化
      mysql -uroot -p
      password
      create database zabbix character set utf8 collate utf8_bin;
      grant all privileges on zabbix.* to zabbix@localhost identified by 'password';
      quit;
      
      zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
      password
      #(数分~十数分かかります)
    11. Zabbixにデータベースアクセス用パスワードを設定
      vi /etc/zabbix/zabbix_server.conf
      DBPassword=password
    12. Zabbixサーバへのタイムゾーン設定
      vi /etc/zabbix/apache.conf
      # php_value date.timezone Europe/Riga
      ↓
      php_value date.timezone Asia/Tokyo
      # ※2箇所あります
    13. グラフの文字化け対策
      日本語フォントをIPAゴシックにします
      cd ~
      apt-get install -y unzip
      wget https://ipafont.ipa.go.jp/IPAfont/ipag00303.zip
      cd /usr/share/fonts
      unzip ~/ipag00303.zip
      rm /etc/alternatives/zabbix-frontend-font
      ln -s /usr/share/fonts/ipag00303/ipag.ttf /etc/alternatives/zabbix-frontend-font
      cd ~
    14. Zabbixの起動および自動起動設定
      systemctl restart zabbix-server zabbix-agent apache2
      systemctl enable zabbix-server zabbix-agent apache2
    15. シャットダウン時のハングアップ対策(ZBX-15602/ZBX-16708)
      vi /etc/systemd/system/multi-user.target.wants/zabbix-server.service
      # [Unit]ブロックのAfterを変更
      After=syslog.target
      After=network.target
      ↓
      After=syslog.target network.target mariadb.service
      # 保存終了
      systemctl daemon-reload
      systemctl restart zabbix-server
    16. ZABBIXのGUIにログインして初期設定
      データベースのパスワードは password です。
    17. Zabbiサーバーが動作していません対策

      vi /etc/zabbix/web/zabbix.conf.php
      $ZBX_SERVER = 'localhost';
      ↓
      $ZBX_SERVER = '127.0.0.1';
      # 保存終了
      systemctl stop zabbix-server
      shutdown -r now
    18. IPアドレスを変更する場合の例

      vi /etc/netplan/50-cloud-init.yaml
      
      network:
          ethernets:
              ens3:
                  dhcp4: true
      ↓
      network:
          ethernets:
              ens3:
                  dhcp4: no
                  addresses: [192.168.200.50/24]
                  gateway4: 192.168.200.1
                  nameservers:
                      addresses: [8.8.8.8, 1.1.1.1]
      # 保存終了
      vi /etc/resolf.conf
      # 適当に編集
      # 保存終了 # 設定反映 netplan apply
    19. GUIログイン
      ブラウザから http://[IPアドレス]/zabbix/ でログインします。
      ログインID/PWは admin / zabbix です。

    20. 機器監視テスト
      機器監視用のテンプレートは Template Module ICMP Ping を使って下さい。

    21. トラフィック量グラフ生成テスト
      テンプレートは Template Net Network Generic Device SNMPv1 が良いと思います。
      ホストを追加してからグラフに値が載ってくるまでは、ある程度時間がかかります(設定→ホスト、の一覧の『グラフ』に、検出されたグラフ数が出ます)。

    22. メール発報設定
      1. 管理→メディアタイプ→Emailを更新
      2. 管理→ユーザー→対象ユーザ名→メディア→追加で追加
      3. 設定→アクション→Report problems to Zabbix administrators→新規条件を追加し、有効をクリックし、更新メール発報の設定

その他

  • Zabbixシャットダウン時
    VMに入って shutdown -h now するか、VirtualizationStationからシャットダウン信号を送って下さい。
    オペレーション時、時間的余裕があるなら、OSを落とす前に systemctl stop zabbix-server をしてもよいと思います。

  • Zabbix本体のデータ収集を有効にしているときの不具合
    VM起動時にシステムからZabbixサーバに渡される時刻の関係で、Zabbix起動時のデータは『9時間未来』となります。
    次にZabbixサーバがJSTな時刻を取得した時点で、巻き戻りが発生するため、見かけ上いまいまのデータは9時間後まで欠落します。
    Zabbix本体は『無効』にしておくか、データが繋がるまで数時間待って下さい。

  • データ収集が途切れた場合
    systemctl stop zabbix-agent
    systemctl restart zabbix-server
    systemctl start zabbix-agent

    して下さい。

以上です。