WiFi経由でNTP時刻合わせをする時計ムーブメント CH899WiFi

2024/10/09 ニトリ製品について記載
2024/10/10 NTPサーバの指定先について追加
2024/10/15 ニトリ版のNTPサーバについて追加
2024/11/07 ニトリ版販売終息とノア精密製品について追加

このページで紹介しているCH899WiFiですが、ニトリから発売された「Wi-Fiで時間を合わせる掛け時計 (SW WH 009TG)」で採用され、2024年10月上旬から3990円で販売開始されていました。

ただ、どうやら初回出荷分で終了してしまったようで、2024年11月7日現在、再入荷が未定となっているようです。

そんななか、2024年11月6日 ノア精密から「MAG無線LANアナログ掛時計シグナルキーパー W-811 WH-Z」という新製品が7678円で登場しました。詳細説明ページ, マニュアルPDF

ノア精密版は設定UIが高機能になっていて、NTPサーバの指定、NTP受信時間、秒針停止時間を手動で設定できる他、固定IPアドレス設定まで可能となっているようです。


それに対して、ニトリ版は 取扱説明書記載の裏面に「CH-899」と下にある写真そのままに載っていました。説明書内容を見る限りではCH899WiFiとほぼ同じ動作をしている模様です。

特徴

・2.4GHz WiFi専用機器
・一度設定した内容は変更できず、再設定は初期化必須
・NTPの時計あわせは1日1回のみで、それ以外の時間帯WiFi部分はスリープし応答がない
・NTPサーバとして何が登録されているかは未公開(pool.ntp.org, time.pool.aliyun.com, cn.ntp.org.cn を見てる可能性が高い)
・秒針がスムースに回る静音タイプと呼ばれるもの
・秒針が動かない時間帯がある(ニトリ説明書では”夜間0~6時は秒針が動かない”)
・初期設定時のTimeZoneは日本時間で使用する場合は「GMT+9」を指定すること
・電池交換で設定が消えたりはしない

NTPサーバについて設定画面上未公開となっていますが、2024/02にCH899のパケット解析をした記事「NTP対応アナログ掛け時計をDIYする」によると pool.ntp.org と time.pool.aliyun.com をNTPサーバとして指定していると思われれる動作をしていたとのことです。

ニトリ版を確認した方のツイート によると cn.ntp.org.cn, time.pool.aliyun.com, pool.ntp.org を確認した、とのことです。

使用上の注意点として、特徴にあげたように、この装置は1回設定してしまうと設定変更のためのUIを用意していません。設定に失敗した場合は、M.SETボタンを3秒押し続けて初期化して再設定する必要があります。

また、使用中に運用状況を確認するためのUIも用意していませんし、1日1回の時計あわせの時以外はスリープしているようでパケット応答もしていないようです。

特徴説明のところで「ニトリ説明書では”夜間0~6時は秒針が動かない”」としているのは、こちらで確認したCH-899WiFiでは、針が止まる場所は不定で、止まる時間帯もよくわからない、昼間も秒針が止まっていることがある、という動作をしていたためです。
設定UIにあった中国語表記が消えたりしているようなので、2年の間でいくつかバグが修正されているんだと思います。

(ニトリ版を購入された方のレポートでは、Web UIに日本語表記が追加されている、とのことです)

なお、国内認証は工事設計認証として通していました。

申請資料のPDFを見てみたら、WiFi部分の実体は Ai-Thinker ESP-01F(ESP8285) モジュールを使っていました。

ESP8285なので直接配線してプログラムイメージを読み出す、ということもできるんじゃないかと思います。


2024/11/07追記

なお、 ノア精密製造 から “W-572 CH899-ゆっくり振子 “、”CH899-RCstep-z”といったシリーズが出ていますが、単3乾電池1本で動く「CH899」は40kHz/60kHzを受信する普通の電波時計です。WiFi接続するノア精密の時計は単3電池2本で動くもので、「MAG無線LANアナログ掛時計シグナルキーパー」「無線LANでネットと接続し時刻を同期できる掛け時計W-811 WH-Z」「無線 LAN アナログ時計 TC-R1-z-2406」といった名称であることに注意してください。


ここから下は、2022年に入手したCH-899WiFiに関する記述です。

2024年10月時点では、上記のニトリのものがお手軽に買えますし、動作も改善しているようなのでそちらがお勧めです。


aliexpressでWiFi経由でNTP時刻合わせをする時計のムーブメントが売っているのを発見。

時計の針が1種類で$16.14の「DIY Smart Wifi Clock Movement Automatic Time Adjustment Mute Movement Home Decorations Accessory」と、時計の針が3種類で$17.20の「DIY Smart Wifi Clock Movement Automatic Time Adjustment Mute Movement Kits Home Clocks Decorations Accessory」を買ってみた。

ちなみに、違うセラーだと$10.60+送料$4.46 で売ってるのも発見した。

資料を探してみるとメーカに近いと思われるところのページを発見

Dongguan Heng-Rong Hardware Electonic Technology社の「Clock Movement:CH899 14.5mm Wifi Controlled Clock Movement」「智能钟表机芯轴长14.5mm 扫描WiFi钟机芯

使い方については英語ページの方が詳細となっている。

さて、発注から約3週間で到着

まずは12時方向で針を取り付ける。

取り付け後に裏側にあるピンを引き抜く。ちょっと思い切って抜かないと駄目かも

で、電池を入れると原点調整が始まる。

赤枠のところの左側に赤LED、右側に青LEDがあり、時計設定用のWiFiが動いている時は左側の赤LEDが点滅する。

このタイミングでスマホのWiFi一覧を見ると「Wifi-Clock_XXXXXX」というSSIDが登場しているので、そこに接続する。

そうすると自動的にブラウザが開いて設定画面が表示される。

検索されたSSID一覧から接続するものを1つ選択

SSIDのパスワードを入力し、日本であれば「TimeZone: GMT+9」を選択して「save」をクリックして、設定を保存します。

指定したSSIDに接続できるとWifi-clockのSSIDはなくなり、青LEDが3回光って消灯します。(赤LEDも消灯)

針がしばらーく自働で動いて現在時刻になったら設定完了です。

なお、針が現在時刻を指していない場合は、裏側のRECとある青ボタンを押します。

WIFI movement function book

上記の画像だと「Pointer to the zero button」とあるボタンです。これを3秒程度押し続けると、針が急激に動き始めて止まります。

止まったら針を一度取り外して12時に揃えて取り付けます。

取り付け終わったらREC青ボタンを再び3秒程度押すと時刻合わせが開始されます。

これでちゃんとした時刻を表示してくれることでしょう

さて・・・100円ショップで買ってきた安い時計を解体

ムーブメントのサイズが違います

無理矢理下側を除去

取り付け

この状態で使用しています

ちなみに単3電池2本で約7ヶ月使えていました。

dnfコマンドで”Less than 1000 bytes/sec transferred the last 30 seconds”を言われるのを無視したい

openEuler 20.03 LTS環境のメンテナンスのため、久しぶりに起動して「dnf update」を実行した。

すると、大きめのファイルのダウンロードで「Less than 1000 bytes/sec transferred the last 30 seconds」と言われていた。

しかし、単純に中国サーバなので遅いだけなので、この速度制限をどうにかしたい。

/etc/dnf/dnf.conf の[main]セクションに「minrate=1」を追加することで、最低速度が1bytesとなり速度制限が実質解除となった。

また、openeular 20.03lts sp2環境でアップデートしたらfuse3関連でエラーとなった。

[root@openeuler ~]# dnf check-update
Last metadata expiration check: 0:12:39 ago on Fri 15 Apr 2022 05:08:37 PM JST.
Obsoleting Packages
fuse.x86_64                             2.9.9-3.oe1                   OS
    fuse.x86_64                         2.9.9-4.oe1                   @update
fuse.x86_64                             2.9.9-3.oe1                   OS
    fuse-common.x86_64                  3.9.2-4.oe1                   @update
fuse.x86_64                             2.9.9-3.oe1                   everything
    fuse.x86_64                         2.9.9-4.oe1                   @update
fuse.x86_64                             2.9.9-3.oe1                   everything
    fuse-common.x86_64                  3.9.2-4.oe1                   @update
fuse3.x86_64                            3.9.2-3.oe1                   everything
    fuse-common.x86_64                  3.9.2-4.oe1                   @update
Security: kernel-4.19.90-2203.5.0.0143.oe1.x86_64 is an installed security update
Security: kernel-4.19.90-2110.3.0.0116.oe1.x86_64 is the currently running version
[root@openeuler ~]# dnf update -y
Last metadata expiration check: 0:12:44 ago on Fri 15 Apr 2022 05:08:37 PM JST.
Error:
 Problem: cannot install both fuse-2.9.9-3.oe1.x86_64 and fuse-2.9.9-4.oe1.x86_64
  - cannot install the best update candidate for package fuse-common-3.9.2-4.oe1.x86_64
  - cannot install the best update candidate for package fuse-2.9.9-4.oe1.x86_64
(try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
[root@openeuler ~]#

調べて見ると公式FAQに記載があった。

ただ、文字が抜けてたりして実行できない

[root@openeuler ~]# dnf fuse fuse3 fuse-common
No such command: fuse. Please use /usr/bin/dnf --help
It could be a DNF plugin command, try: "dnf install 'dnf-command(fuse)'"
[root@openeuler ~]# dnf upgrade fuse fuse3 fuse-common
Last metadata expiration check: 0:14:02 ago on Fri 15 Apr 2022 05:08:37 PM JST.
Package fuse3 available, but not installed.
No match for argument: fuse3
Error:
 Problem: cannot install both fuse-2.9.9-3.oe1.x86_64 and fuse-2.9.9-4.oe1.x86_64
  - cannot install the best update candidate for package fuse-common-3.9.2-4.oe1.x86_64
  - cannot install the best update candidate for package fuse-2.9.9-4.oe1.x86_64
(try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
[root@openeuler ~]#

こちらではどうか?

[root@openeuler ~]# dnf downgrade fuse
Last metadata expiration check: 0:15:07 ago on Fri 15 Apr 2022 05:08:37 PM JST.
Dependencies resolved.
================================================================================
 Package           Architecture   Version              Repository          Size
================================================================================
Installing dependencies:
 fuse3             x86_64         3.9.2-3.oe1          everything         113 k
     replacing  fuse-common.x86_64 3.9.2-4.oe1
Downgrading:
 fuse              x86_64         2.9.9-3.oe1          OS                 139 k
     replacing  fuse-common.x86_64 3.9.2-4.oe1
 fuse-help         x86_64         2.9.9-3.oe1          OS                  20 k

Transaction Summary
================================================================================
Install    1 Package
Downgrade  2 Packages

Total download size: 272 k
Is this ok [y/N]: y
Downloading Packages:
(1/3): fuse-help-2.9.9-3.oe1.x86_64.rpm          63 kB/s |  20 kB     00:00
(2/3): fuse3-3.9.2-3.oe1.x86_64.rpm             196 kB/s | 113 kB     00:00
(3/3): fuse-2.9.9-3.oe1.x86_64.rpm               89 kB/s | 139 kB     00:01
--------------------------------------------------------------------------------
Total                                           173 kB/s | 272 kB     00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Downgrading      : fuse-help-2.9.9-3.oe1.x86_64                           1/6
  Downgrading      : fuse-2.9.9-3.oe1.x86_64                                2/6
  Running scriptlet: fuse-2.9.9-3.oe1.x86_64                                2/6
  Installing       : fuse3-3.9.2-3.oe1.x86_64                               3/6
  Running scriptlet: fuse3-3.9.2-3.oe1.x86_64                               3/6
  Cleanup          : fuse-2.9.9-4.oe1.x86_64                                4/6
  Running scriptlet: fuse-2.9.9-4.oe1.x86_64                                4/6
  Obsoleting       : fuse-common-3.9.2-4.oe1.x86_64                         5/6
  Cleanup          : fuse-help-2.9.9-4.oe1.x86_64                           6/6
  Running scriptlet: fuse-help-2.9.9-4.oe1.x86_64                           6/6
  Verifying        : fuse-2.9.9-3.oe1.x86_64                                1/6
  Verifying        : fuse-2.9.9-4.oe1.x86_64                                2/6
  Verifying        : fuse-common-3.9.2-4.oe1.x86_64                         3/6
  Verifying        : fuse-help-2.9.9-3.oe1.x86_64                           4/6
  Verifying        : fuse-help-2.9.9-4.oe1.x86_64                           5/6
  Verifying        : fuse3-3.9.2-3.oe1.x86_64                               6/6

Downgraded:
  fuse-2.9.9-3.oe1.x86_64              fuse-help-2.9.9-3.oe1.x86_64

Installed:
  fuse3-3.9.2-3.oe1.x86_64

Complete!
[root@openeuler ~]# dnf check-update
Last metadata expiration check: 0:15:17 ago on Fri 15 Apr 2022 05:08:37 PM JST.

fuse.x86_64                            2.9.9-4.oe1                        update
fuse-help.x86_64                       2.9.9-4.oe1                        update
fuse3.x86_64                           3.9.2-4.oe1                        update
Security: kernel-4.19.90-2203.5.0.0143.oe1.x86_64 is an installed security update
Security: kernel-4.19.90-2110.3.0.0116.oe1.x86_64 is the currently running version
[root@openeuler ~]#

で、もう1回アップデートをかけてみたら成功した

[root@openeuler ~]# dnf update -y
Last metadata expiration check: 0:16:25 ago on Fri 15 Apr 2022 05:08:37 PM JST.
Dependencies resolved.
================================================================================
 Package             Architecture   Version                Repository      Size
================================================================================
Upgrading:
 fuse                x86_64         2.9.9-4.oe1            update         136 k
 fuse-help           x86_64         2.9.9-4.oe1            update          13 k
 fuse3               x86_64         3.9.2-4.oe1            update         112 k
Installing dependencies:
 fuse-common         x86_64         3.9.2-4.oe1            update         9.2 k
Installing weak dependencies:
 fuse3-help          x86_64         3.9.2-4.oe1            update          14 k

Transaction Summary
================================================================================
Install  2 Packages
Upgrade  3 Packages

Total download size: 284 k
Downloading Packages:
(1/5): fuse-common-3.9.2-4.oe1.x86_64.rpm        19 kB/s | 9.2 kB     00:00
(2/5): fuse3-help-3.9.2-4.oe1.x86_64.rpm         28 kB/s |  14 kB     00:00
(3/5): fuse-help-2.9.9-4.oe1.x86_64.rpm          81 kB/s |  13 kB     00:00
(4/5): fuse-2.9.9-4.oe1.x86_64.rpm              190 kB/s | 136 kB     00:00
(5/5): fuse3-3.9.2-4.oe1.x86_64.rpm             271 kB/s | 112 kB     00:00
--------------------------------------------------------------------------------
Total                                           308 kB/s | 284 kB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Installing       : fuse-common-3.9.2-4.oe1.x86_64                         1/8
  Upgrading        : fuse-help-2.9.9-4.oe1.x86_64                           2/8
  Installing       : fuse3-help-3.9.2-4.oe1.x86_64                          3/8
  Upgrading        : fuse3-3.9.2-4.oe1.x86_64                               4/8
  Running scriptlet: fuse3-3.9.2-4.oe1.x86_64                               4/8
  Upgrading        : fuse-2.9.9-4.oe1.x86_64                                5/8
  Running scriptlet: fuse-2.9.9-4.oe1.x86_64                                5/8
  Cleanup          : fuse-2.9.9-3.oe1.x86_64                                6/8
  Running scriptlet: fuse-2.9.9-3.oe1.x86_64                                6/8
  Cleanup          : fuse-help-2.9.9-3.oe1.x86_64                           7/8
  Cleanup          : fuse3-3.9.2-3.oe1.x86_64                               8/8
  Running scriptlet: fuse3-3.9.2-3.oe1.x86_64                               8/8
  Verifying        : fuse-common-3.9.2-4.oe1.x86_64                         1/8
  Verifying        : fuse3-help-3.9.2-4.oe1.x86_64                          2/8
  Verifying        : fuse-2.9.9-4.oe1.x86_64                                3/8
  Verifying        : fuse-2.9.9-3.oe1.x86_64                                4/8
  Verifying        : fuse-help-2.9.9-4.oe1.x86_64                           5/8
  Verifying        : fuse-help-2.9.9-3.oe1.x86_64                           6/8
  Verifying        : fuse3-3.9.2-4.oe1.x86_64                               7/8
  Verifying        : fuse3-3.9.2-3.oe1.x86_64                               8/8

Upgraded:
  fuse-2.9.9-4.oe1.x86_64 fuse-help-2.9.9-4.oe1.x86_64 fuse3-3.9.2-4.oe1.x86_64

Installed:
  fuse-common-3.9.2-4.oe1.x86_64          fuse3-help-3.9.2-4.oe1.x86_64

Complete!
[root@openeuler ~]# rpm -qa|grep fuse
fuse3-3.9.2-4.oe1.x86_64
fuse-common-3.9.2-4.oe1.x86_64
fuse3-help-3.9.2-4.oe1.x86_64
fuse-2.9.9-4.oe1.x86_64
fuse-help-2.9.9-4.oe1.x86_64
[root@openeuler ~]#

ただ・・・もう1回「dnf check-update」を実行するとこうなるんだけど、なんなんだ・・・

[root@openeuler ~]# dnf check-update
Last metadata expiration check: 0:17:13 ago on Fri 15 Apr 2022 05:08:37 PM JST.
Obsoleting Packages
fuse.x86_64                             2.9.9-3.oe1                   OS
    fuse.x86_64                         2.9.9-4.oe1                   @update
fuse.x86_64                             2.9.9-3.oe1                   OS
    fuse-common.x86_64                  3.9.2-4.oe1                   @update
fuse.x86_64                             2.9.9-3.oe1                   everything
    fuse.x86_64                         2.9.9-4.oe1                   @update
fuse.x86_64                             2.9.9-3.oe1                   everything
    fuse-common.x86_64                  3.9.2-4.oe1                   @update
fuse3.x86_64                            3.9.2-3.oe1                   everything
    fuse-common.x86_64                  3.9.2-4.oe1                   @update
fuse3.x86_64                            3.9.2-3.oe1                   everything
    fuse3.x86_64                        3.9.2-4.oe1                   @update
Security: kernel-4.19.90-2203.5.0.0143.oe1.x86_64 is an installed security update
Security: kernel-4.19.90-2110.3.0.0116.oe1.x86_64 is the currently running version
[root@openeuler ~]#

うーん???

[root@openeuler ~]# rpm -qa|grep fuse
fuse3-3.9.2-4.oe1.x86_64
fuse-common-3.9.2-4.oe1.x86_64
fuse3-help-3.9.2-4.oe1.x86_64
fuse-2.9.9-4.oe1.x86_64
fuse-help-2.9.9-4.oe1.x86_64
[root@openeuler ~]# dnf remove fuse3-3.9.2-4.oe1.x86_64 fuse3-help-3.9.2-4.oe1.x86_64
Dependencies resolved.
================================================================================
 Package            Architecture   Version                Repository       Size
================================================================================
Removing:
 fuse3              x86_64         3.9.2-4.oe1            @update         377 k
 fuse3-help         x86_64         3.9.2-4.oe1            @update         5.0 k

Transaction Summary
================================================================================
Remove  2 Packages

Freed space: 382 k
Is this ok [y/N]: y
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Erasing          : fuse3-3.9.2-4.oe1.x86_64                               1/2
  Running scriptlet: fuse3-3.9.2-4.oe1.x86_64                               1/2
  Erasing          : fuse3-help-3.9.2-4.oe1.x86_64                          2/2
  Running scriptlet: fuse3-help-3.9.2-4.oe1.x86_64                          2/2
  Verifying        : fuse3-3.9.2-4.oe1.x86_64                               1/2
  Verifying        : fuse3-help-3.9.2-4.oe1.x86_64                          2/2

Removed:
  fuse3-3.9.2-4.oe1.x86_64             fuse3-help-3.9.2-4.oe1.x86_64

Complete!
[root@openeuler ~]# rpm -qa|grep fuse
fuse-common-3.9.2-4.oe1.x86_64
fuse-2.9.9-4.oe1.x86_64
fuse-help-2.9.9-4.oe1.x86_64
[root@openeuler ~]#

fuseは2.9.9-3.oe1があるけどfuse-commonにはない

[root@openeuler ~]# dnf downgrade fuse-help-2.9.9-3.oe1 fuse-2.9.9-3.oe1 fuse-common-2.9.9-3.oe1
Last metadata expiration check: 0:24:30 ago on Fri 15 Apr 2022 05:08:37 PM JST.
No package fuse-common-2.9.9-3.oe1 available.
Dependencies resolved.
================================================================================
 Package           Architecture   Version              Repository          Size
================================================================================
Installing dependencies:
 fuse3             x86_64         3.9.2-3.oe1          everything         113 k
     replacing  fuse-common.x86_64 3.9.2-4.oe1
Downgrading:
 fuse              x86_64         2.9.9-3.oe1          OS                 139 k
     replacing  fuse-common.x86_64 3.9.2-4.oe1
 fuse-help         x86_64         2.9.9-3.oe1          OS                  20 k

Transaction Summary
================================================================================
Install    1 Package
Downgrade  2 Packages

Total download size: 272 k
Is this ok [y/N]: n
Operation aborted.
[root@openeuler ~]#
[root@openeuler ~]# dnf --showduplicates list fuse-common
Last metadata expiration check: 0:25:15 ago on Fri 15 Apr 2022 05:08:37 PM JST.
Installed Packages
fuse-common.x86_64                      3.9.2-4.oe1                      @update
Available Packages
fuse-common.x86_64                      3.9.2-4.oe1                      update
[root@openeuler ~]# dnf --showduplicates list fuse
Last metadata expiration check: 0:25:24 ago on Fri 15 Apr 2022 05:08:37 PM JST.
Installed Packages
fuse.x86_64                        2.9.9-4.oe1                        @update
Available Packages
fuse.src                           2.9.9-3.oe1                        source
fuse.x86_64                        2.9.9-3.oe1                        OS
fuse.x86_64                        2.9.9-3.oe1                        everything
fuse.x86_64                        2.9.9-4.oe1                        update
[root@openeuler ~]#

解決できなさそうだなぁ・・・

PowerShellにパスワード文字列を直接書かない手法

PowerShellで用意されているGet-Credential 関連を駆使して、PowerShellスクリプト内に直接パスワードを書かないで済む手法でスクリプトを作成した。

スクリプトを配置したディレクトリにscript.cred というファイルを作り、そこに暗号化されたパスワード文字列を配置する、という仕組み。

$authfile=$PSScriptRoot+".\script.cred"
$username="admin" #ユーザ名
$passwdstr="" # この変数にパスワード文字列が入る。
if((Test-Path $authfile) -eq $false){
    $creds = Get-Credential -UserName $username -Message $($username+"ユーザのパスワードを入力してください")
    $creds.Password | ConvertFrom-SecureString | Set-Content -Path $authfile | Out-Null
    $passwdstr=[Runtime.InteropServices.Marshal]::PtrToStringBSTR([Runtime.InteropServices.Marshal]::SecureStringToBSTR($creds.Password))
}else{
    $passwdstr=[Runtime.InteropServices.Marshal]::PtrToStringBSTR([Runtime.InteropServices.Marshal]::SecureStringToBSTR($(Get-Content $authfile | ConvertTo-SecureString)))
}

# この段階の $passwdstr には暗号化されていないパスワード文字列が入っている

なお、メモリ上の$passwdstr には暗号化されていない文字列が保存されているため、そこは注意が必要。

CommvaultのREST APIをPowerShellで使って見る

Commvaultバックアップの操作にREST APIを使うことができる。

・Commvault V11SP24の「REST API Overview
Commvault Rest APIの出力サンプル群

ログインして、指定したクライアントのサブクライアント情報を取得するPowerShellで作成してみた。

# CommCellユーザ情報
$restapiuser="admin"
$restapipasswd="パスワード"

# REST APIで使用するURL
# どちらを使うかについて https://documentation.commvault.com/11.24/expert/45592_available_web_services_for_rest_api.html
#$restapiurlbase="http://~:81/SearchSvc/CVWebService.svc/"
$restapiurlbase="http://~/webconsole/api/"

# 検索用文字列
$clientname="クライアント名"

# CommCell環境にログイン
$restapipasswdbase64=[Convert]::ToBase64String(([System.Text.Encoding]::Default).GetBytes($restapipasswd))
$headers=@{
    "Accept"="application/json"
    "Content-Type"="application/json"
}
$loginReq = @{
    username=$restapiuser
    password=$restapipasswdbase64
}
$loginresponse=Invoke-RestMethod -Method post -Uri $($restapiurlbase+"Login") -Body $($loginReq|ConvertTo-Json) -ContentType 'application/json' -Headers $headers

# 指定クライアントのサブクライアント情報取得
$headers=@{
    "Accept"="application/json"
    "Authtoken"=$loginresponse.token
}
$response=Invoke-RestMethod -Method Get -Uri $($restapiurlbase+"Subclient?clientName="+$clientname) -Headers $headers

# $response.subClientProperties.subClientEntity にサブクライアントの情報が入っているが
# 複数のサブクライアントがあると $response.subClientProperties.subClientEntity.subclientName が複数行になるので注意

# 表示
$response.subClientProperties.subClientEntity | ForEach-Object {
    $subcliententory=$_
    Write-host $subcliententory
 }

# CommCellログアウト
$headers=@{
    "Accept"="application/json"
    "Authtoken"=$loginresponse.token
}
$logoutresponse=Invoke-RestMethod -Method post -Uri $($restapiurlbase+"Logout") -Headers $headers

ただ、このスクリプトを使うとCommvault Event viewerに表示されるログイン情報が「Machine:unknown Locale:unknown」となる。

これを設定できるか調べて見たが、無いように思える。

Oracle Cloud上のOracle Linux 8環境でレポジトリを追加する

Oracle Cloud上でOracle Linux 8を展開するとき、Oracleが提供するプラットフォームイメージ を使用する。

Oracle-Linux-8.5-aarch64-2022.03.17-1 を使用したところ、CLIのレポジトリ一覧表示に変化があった。

$ sudo dnf repolist --all
This system is receiving updates from OSMS server.
repo id                                  repo name                       status
ol8_addons-aarch64                       Oracle Linux 8 Add ons (aarch64 enabled
ol8_appstream-aarch64                    Oracle Linux 8 Application Stre enabled
ol8_baseos_latest-aarch64                Oracle Linux 8 BaseOS Latest (a enabled
ol8_ksplice-aarch64                      Ksplice for Oracle Linux 8 (aar enabled
ol8_mysql80-aarch64                      MySQL 8.0 for Oracle Linux 8 (a enabled
ol8_mysql80_connectors_community-aarch64 MySQL 8.0 Connectors for Oracle enabled
ol8_mysql80_tools_community-aarch64      MySQL 8.0 Tools Community for O enabled
ol8_oci_included-aarch64                 Oracle Software for OCI users o enabled
$

「This system is receiving updates from OSMS server.」というメッセージが追加されていて、有効化されているレポジトリしか表示されていない。

OSMSというのはOS Management System(OS管理) のことで、2020年ぐらいから組み込みが開始されていたもののレポジトリ管理までは行っていなかったものとなる。

リリース情報を確認すると2021年10月に関連する記載があった。


10月Oracle Linux 8プラットフォーム・イメージでデフォルトで有効になっているOS管理サービス・エージェント・プラグイン

2021年10月にリリースされたOracle Linux 8プラットフォーム・イメージ以降、Oracle Linux 8インスタンスのOracle Cloud Agent 1.16.0でOS管理サービス・エージェント・プラグインがデフォルトで有効になっています。

2021年10月(Oracle Cloud Agent 1.15.0以前を実行)より前に起動されたOracle Linux 8インスタンスの場合、OS管理サービス・エージェント・プラグインはデフォルトで無効になっています。無効化されたOracle Linux 8インスタンスのOS管理サービス・エージェント・プラグインは、Oracle Cloud Agent 1.16.0への更新後も無効のままです。

詳細は、OS管理の開始を参照してください。


ただ、「OS管理の開始 – 前提条件」には「OS管理は、Oracle Cloud Free Tierでは使用できません。」

使えてしまっている現状は正しいのか、誤りなのか、なやむところです・・・

それはさておき、「This system is receiving updates from OSMS server.」が表示される場合のレポジトリ追加は、まずは、Oracle Cloudのコンソール画面から実施する。

[インスタンスの詳細]-[OS管理]を開くと、パッチの状況が確認できる

レポジトリを追加する場合は「…」をクリックして表示される「OS管理詳細の表示」を選択する

[OS管理の詳細]で[ソフトウェア・ソース]を選択すると、現在enabledとなっているレポジトリ一覧が確認できる。

レポジトリを追加するには、ここの「追加」をクリックする。

追加したいレポジトリを選択し「追加」する。

一覧に追加されたことを確認します。

もちろんコマンドで確認しても追加されています。

$ sudo dnf repolist --all
This system is receiving updates from OSMS server.
repo id                                  repo name                       status
ol8_addons-aarch64                       Oracle Linux 8 Add ons (aarch64 enabled
ol8_appstream-aarch64                    Oracle Linux 8 Application Stre enabled
ol8_baseos_latest-aarch64                Oracle Linux 8 BaseOS Latest (a enabled
ol8_developer_epel-aarch64               Oracle Linux 8 EPEL Packages fo enabled
ol8_ksplice-aarch64                      Ksplice for Oracle Linux 8 (aar enabled
ol8_mysql80-aarch64                      MySQL 8.0 for Oracle Linux 8 (a enabled
ol8_mysql80_connectors_community-aarch64 MySQL 8.0 Connectors for Oracle enabled
ol8_mysql80_tools_community-aarch64      MySQL 8.0 Tools Community for O enabled
ol8_oci_included-aarch64                 Oracle Software for OCI users o enabled
$