カテゴリー: 計算機

  • ProxMox VE の状態をメールで通知する

    OpenMediaVault の状態をメールで通知するには、メニュー System > Scheduled Tasks を利用してシェルスクリプトを実行、という方法があります。シェルスクリプトの標準出力が cron のおかげでメール送信される、という仕掛けです。

    これを真似て ProxMox Virtual Environment (PVE) の状態を通知させてみました。

    PVE ではローカルの root ユーザーへメールを送ると、通知ターゲット(Notification Target) で指定した SMTP サーバーを経由して、そのメールを転送できます。

    あらすじ
    1. 「ユーザー」を作って、宛先メールアドレスを指定します。
    2. 「通知ターゲット」を作って、SMTPサーバーと、作った「ユーザー」を指定します。
    3. 「通知 Matcher」の設定を変更して、作った「通知ターゲット」を指定します。
    4. 状態をテキスト出力するシェルスクリプトを作ります。
    5. root の crontab を編集して、作ったシェルスクリプトを定期的に実行させます。
    ユーザー(宛先メールアドレス指定)を作る

    データセンター > アクセス権限 > ユーザ

    通知ターゲット(SMTPサーバー指定)を作る

    データセンター > 通知 > 通知ターゲット

    通知 Matcher の設定変更

    データセンター > 通知 > 通知 Matcher

    既定の「default-matcher」のタブ「通知するターゲット」で、既定の mail-to-root のチェックを外し、作った通知ターゲットにチェックを入れます。

    シェルスクリプトを作る
    #!/bin/bash
    (
    	echo "<date>$(date)</date>";
    	echo "<uptime>$(uptime)</uptime>";
    	echo;	#------------------------
    	echo "<free>";
    	free;
    	echo "</free>";
    	echo;	#------------------------
    	echo "<lsblk -fipr>";
    	lsblk -fipr | grep "\s\S";	# a space followed by a non-space
    	echo "</lsblk>";
    	echo;	#------------------------
    IFNAME=vmbr0
    	echo "<ip address show $IFNAME>";
    	ip address show $IFNAME;
    	echo "</ip>";
    	echo;	#------------------------
    IFNAME=enp2s0
    	echo "<ethtool $IFNAME>";
    	/usr/sbin/ethtool $IFNAME | grep 'Speed\|Duplex';
    	echo "</ethtool>";
    	echo;
    	echo "<ip -statistics link show $IFNAME>";
    	ip -s link show $IFNAME;
    	echo "</ip>";
    	echo;	#------------------------
    	echo "<ss --tcp --all (!TIME-WAIT)>";
    	ss -t -a | grep -v "^TIME-WAIT";
    	echo "</ss>";
    	echo;	#------------------------
    	echo "<ss --udp --all>";
    	ss -u -a;
    	echo "</ss>";
    	echo;	#------------------------
    )
    crontab に登録する

    crontab で1日1回実行させます。

    11 23 * * *     sh /home/work/pve-status.sh

    おしまい。

  • ProxMox Virtual Environment

    VMware さんが Broadcom さんに買収された結果、諸々の環境が様変わりしましたので、一念発起して ProxMox仮想サーバーへ移行しました。ついでに物理ホストも、Core i5-8400 (6C/6T)のデスクトップ(IdeaCentre 510S)から、Ryzen 5 6600H (6C/12T)の小型 PC(GMKtec NUCbox M6)へリプレース。

    メモリは変わらず16GB ですが、電気代は下がったかも(未確認)。ゲストは OpenMediaVault と BOINC と、年賀状と年末調整と音楽 CD の取り込みに使っている Windows です。

    今のところ大きなトラブルなく動いてくれてます。ちょっと引っかかっているのは OpenMediaVault 用の2TB ストレージ(SATA HDD)が 1.92TB の PCIe M.2 SSD になったこと。寿命は大丈夫かなぁ・・・

  • ESXi 8.0 Update 1c

    久しぶりに ESXi のリリースノート(Web)を見たら、最新バージョン8.0 Update 1c が公開されていました。いつもの如く、バンドルをダウンロードして適用しました。

  • ELB背後のHTTPリダイレクトのループ回避

    もう3月も半ば。兄猫みゃおの一周忌も過ぎて、桜もちらほら。早過ぎます〜

    さて、ちょっと気になっていたことがあって、検索でヒットしたページにアンカーを打っておきます。

    システム構成としては、ELB (Application Load Balancer) が HTTPS を終端した後、443/https と80/http のどちらも EC2サーバーへ繋いでくれます。ここで HTTP を HTTPS にリダイレクトしたいんですが、それをサーバー側でやる場合(ELB の設定でもできるそうです)。

    このときサーバーはどちらも80/http で受けるので、常にリダイレクトすると無限ループになります。そこで「元々 ELB に届いた時に HTTPS だったか」判定する必要があって、そのとき使えるのが HTTP リクエストヘッダーの X-Forwarded-Proto です。

    AWS のガイド: HTTP headers and Application Load Balancers (Elastic Load Balancing)

  • ESXi 7.0 Update 3e

    火曜日に ESXi 7.0 Update 3e が公開されていました。さっそくバンドルをダウンロードして更新しました。

    ESXi 7.0 Update 3e installed.
  • ESXi 7.0 Update 3d

    3月末に ESXi 7.0 Update 3d が公開されていました。今日になって気づき、いつものようにバンドルをダウンロードして、アップデートしました。

    ESXi 7.0 Update 3d installed.
    2022-04-29T13:45:25.747Z SSH[587334]: SSH login enabled
    2022-04-29T13:46:06.818Z shell[587485]: Interactive shell session started
    2022-04-29T13:46:48.300Z shell[587485]: [root]: esxcli software sources profile list -d /vmfs/volumes/datastore1/VMware-ESXi-7.0U3d-19482537-depot.zip
    
    Name                            Vendor        Acceptance Level  Creation Time        Modification Time
    ------------------------------  ------------  ----------------  -------------------  -----------------
    ESXi-7.0U3sd-19482531-standard  VMware, Inc.  PartnerSupported  2022-03-29T00:00:00  2022-03-29T00:00:00
    ESXi-7.0U3sd-19482531-no-tools  VMware, Inc.  PartnerSupported  2022-03-29T00:00:00  2022-03-11T13:53:29
    ESXi-7.0U3d-19482537-standard   VMware, Inc.  PartnerSupported  2022-03-29T00:00:00  2022-03-29T00:00:00
    ESXi-7.0U3d-19482537-no-tools   VMware, Inc.  PartnerSupported  2022-03-29T00:00:00  2022-03-11T15:01:02
    
    2022-04-29T13:47:10.210Z shell[587485]: [root]: esxcli software profile get
    
    ESXi-7.0U3c-19193900-standard
       Name: ESXi-7.0U3c-19193900-standard
       Vendor: VMware, Inc.
       Creation Time: ...
    
    2022-04-29T13:48:38.286Z shell[587485]: [root]: esxcli software profile update -d /vmfs/volumes/datastore1/VMware-ESXi-7.0U3d-19482537-depot.zip -p ESXi-7.0U3d-19482537-standard --no-hardware-warning
    
    Update Result
       Message: The update completed successfully, but the system needs to be rebooted for the changes to be effective.
       Reboot Required: true
       VIBs Installed: ...
    
    2022-04-29T13:49:40.341Z shell[587485]: [root]: esxcli system shutdown reboot -r "Update to version 7.0U3d"
    2022-04-29T13:51:22.606Z ESXShell[265406]: ESXi Shell unavailable
  • LibreELEC の BOINC クライアントを RPC で制御する

    LibreELEC のアドオンで BOINC クライアントを走らせていますが、プリインストールされた BOINC Manager で制御するように Docker コンテナが作られています。そのせいか、外部から RPC がつながりません。他の BOINC クライアントは、OpenMediaVault の Scheduled Jobs を利用して状況取得 & メールしているので、LibreELEC にも RPC が繋がればできるのにな〜と思っておりました。

    ちょっと時間ができたので、あれこれググりながらやってみたら、とりあえずできました。でもアドオン(コンテナ)を更新したら元に戻ってしまうと思うので、やり直せるように記録しておきます。

    1. LibreELEC へ ssh でログイン
    2. BOINC アドオンの起動用スクリプトがあるディレクトリへ移動
    # cd /storage/.kodi/addons/docker.linuxserver.boinc/bin
    1. 念のためバックアップ
    # cp docker.linuxserver.boinc docker.linuxserver.boinc_ORIG
    1. 編集します
    # vi docker.linuxserver.boinc
    • 編集する前はこの内容でした
    #!/bin/sh
    
    name="boinc"
    
    ・・・・・・・中略・・・・・・・
    
    docker run --name="$name" \
               --rm \
               --network=lsio \
               --hostname="Boinc-LibreELEC" \
               -e WARNING_MSG="DO NOT CONTROL THIS IN PORTAINER!" \
               -e PUID="65534" \
               -e PGID="100" \
               -e TZ="$TIMEZONE" \
               -p "$P_port":8080 \
               -v "$V_config":/config \
               $D_vaapi_args \
               $E_additional \
               "$DOCKERIMAGE"
               -p "$P_port":8080 \
    1行追加     -p "31416":31416 \
               -v "$V_config":/config \
    1. BOINC のデータファイルがあるディレクトリへ移動
    # cd /storage/.kodi/userdata/addon_data/docker.linuxserver.boinc
    1. RPC を有効にします
    # vi cc_config.xml
    • こんな中身にします (元は無かったファイル)
    <cc_config>
      <options>
         <allow_remote_gui_rpc>1</allow_remote_gui_rpc>
      </options>
    </cc_config>
    1. RPC のパスワードを確認 (同じディレクトリ)
    # cat gui_rpc_auth.cfg
    (半角英数字が32文字入っていました)
    1. BOINC コンテナを停止
    # docker ps --no-trunc
    CONTAINER ID                                                       IMAGE               COMMAND             CREATED             STATUS              PORTS                                        NAMES
    a24984d93d148b9f551c7266851145566dfb02c1b060527ced4fadf2c3f809f6   linuxserver/boinc   "/init"             4 days ago          Up 21 minutes       3000/tcp, 3389/tcp, 0.0.0.0:8088->8080/tcp   boinc
    # docker stop a24984d93d148b9f551c7266851145566dfb02c1b060527ced4fadf2c3f809f6
    a24984d93d148b9f551c7266851145566dfb02c1b060527ced4fadf2c3f809f6
    1. 停止したのを確認しつつ、自動的に起動するのを待ちます (LibreELEC が再起動してくれる)
    # docker ps --all --no-trunc
    # docker ps --all --no-trunc
    # docker ps --all --no-trunc
    # docker ps --all --no-trunc
    CONTAINER ID                                                       IMAGE               COMMAND             CREATED                  STATUS              PORTS               NAMES
    88aa0ee935fa88b53ed7f4b30283ff4be6c5c297e70208edc28266adffe72cdf   linuxserver/boinc   "/init"             Less than a second ago   Created                                 boinc
    1. ポート番号31416が公開されたのを確認
    # docker ps --all --no-trunc
    CONTAINER ID                                                       IMAGE               COMMAND             CREATED             STATUS              PORTS                                                                  NAMES
    88aa0ee935fa88b53ed7f4b30283ff4be6c5c297e70208edc28266adffe72cdf   linuxserver/boinc   "/init"             18 seconds ago      Up 17 seconds       3000/tcp, 3389/tcp, 0.0.0.0:31416->31416/tcp, 0.0.0.0:8088->8080/tcp   boinc
    1. BOINC Manager から接続してみる

    おしまい。お疲れ様でした(笑)

  • 等幅フォント

    macOS のテキストエディタに mi (エムアイ)を使っています。XML などのコードを読んだり書いたりするのに等幅フォントが欲しくて探したら、Apple さんが公開してくれていました。

    This monospaced variant of San Francisco enables alignment between rows and columns of text, and is used in coding environments like Xcode.

    — Fonts for Apple Platforms

    超便利! ありがとうございます。

  • iPhone 着信音の追加(と削除)

    1. 拡張子 m4r の音声ファイルを作る。
    2. 「ミュージック」アプリを起動して、サイドバーに iPhone が表示されるのを確認。
    3. 音声ファイルを iPhone へドラッグ&ドロップ。
    4. おしまい。macOS Monterey でも効くんじゃないかなぁ :-p

    ここから下は2017年12月20日。macOS Monterey では使えない技です…

    最近の iTunes (例えばバージョン12) は Mac 側のライブラリから着信音がなくなったので、iPhone の同期操作で着信音を追加・削除できなくなりました。代わりに iTunes で iPhone 側へ直接コピーしたり削除したりできます… というわけで備忘録。

    iTunes から iPhone、iPad、iPod touch に着信音を移動する

    追加するには

    1. Mac で、iPhone へ追加したい着信音または通知音を探します。iTunes ライブラリに以前表示されていた着信音や通知音は、「iTunes Media」フォルダの「Tones」フォルダに入っています。
    2. iPhone へ追加したい着信音を選択してコピーします。
    3. iTunes に戻り、「ミュージック」の「ライブラリ」タブを表示します。
    4. 左のサイドバーでデバイス > iPhone の下の「着信音」をクリックします。
    5. 着信音をペーストします。

    削除するには

    1. iTunes の左側のサイドバーで、デバイス > iPhone の下の「着信音」をクリックします。
    2. 削除したい着信音を「control」キーを押しながらクリックまたは右クリックし、着信音を削除するオプションをクリックします。
  • ESXi 7.0 Update 3c

    トラブって非公開にされていた Update 3が修正されたようで、1月27日に ESXi Update 3c が出ていました。

    ウチでは Update 2d から無事に Update 3へ更新できたのでそのまま使っていましたが、そこから Update 3c への更新は行なっていません。ハードウェア自体を新しくしたのでクリーンインストールしました。

    新しいと言っても Core i5-8400中古 PC です。オンボードは Realtek な NIC なので Intel 82574L なカードを増設して ESXi に認識してもらいました。6コアに増えてシングルコア性能も上がって快適。OpenMediaVaultTime Machine をサービスするのが主用途ですが、WCG@BOINC さんも嬉しそうです。