カテゴリー: 技術系

  • 見積をとると、型落ち機種ばかり出てくる

    とある機器の見積をとると、数年前の型落ち機種の見積ばかりが出てくる。型落ちを指定しているわけでも、コスト制約をしているわけでもない。なぜなんだろうか。

    ぼちぼち販売終息になってもおかしくないくらいのロングセラーの機種で、CPUは4年落ちのXeonばかり。これから数年以上も使うという機器なのに、そんなに古いCPUを勧められる。後継機種が出ていないわけではない。後継機種で、2種も出ているのに、古い機種ばかりだ。これが、1社だけならばよいのだが、複数社(依頼したところ全部)から出てくるのだから、なかなか異常とも言える。在庫がダブついているのだろうか。COVID-19のときに半導体不足になったときに、ちょっと前の型を大量にストックしたりしたのだろうか。とはいえ、納期は即納というわけではなく1〜2ヶ月だから、どこからかは輸送されてくるはず。困るのは、安いと思っても、CPUの型番から、何年にリリースされたものなのかをしっかりとチェックしないと4年前のCPUだったりするということ。1、2年程度の型落ちならばよいが、4年となると・・・PCならば、買い替え時期にあたるくらいの期間だけに安物買の銭失いになりかねないということ。

    いったい、どうしたのだろうか。不思議だ。

  • ADがWindows 2000 ネイティブだと、Windows11で不具合がでる

    ADの機能レベルがWindows 2000 ネイティブだと、Windows 11の22H2の一部と、23H2で不具合がある。ドメインへの参加自体はできるが、Microsoft365へのログインができない(WordやExcelでログインできない)、Windows11上でパスワードの変更ができないなどの問題がある。

    そもそも、Windows 2000 ネイティブのActive Directoryを使い続けることが問題なわけだが。

  • Windows UpdateでKB4534310のインストールがエラーになる。

    Windows Server 2008 R2のWindows Updateで、KB4534310のインストールが、エラーコード「8024200D」でエラーになる。

    調べたところ、KB4524157がインストールされていないと、KB4534310のインストールがエラーになるとのこと。エラーになったWindows Server 2008 R2では、KB4524157はWindows Updateで表示されていない。そのため、下記のMicrosoftのサイトから、KB4524157をダウンロードする。

    https://www.catalog.update.microsoft.com/Search.aspx?q=KB4524157

    「windows6.1-kb4524157-x64_0735a83d6d6849dc09c6bc430a8d0b1404b01dd3.msu」がダウンロードできたら、Windows Server 2008 R2でダブルクリックして、インストールする。インストールは時間がかかった。インストールはOSの再起動がある。

    KB4524157のインストール後、Windows Updateを実行したところ、正常にインストールができた。

    (Windows7も同じエラーがでたときは、同じ方法で対応可能。そのときは、Windows7用のKB4524157のMSUファイルをダウンロードする)

  • Windows Server 2008 R2 SP1のWindows Updateが「80072EFE」で異常終了する

    Windows Server 2008 R2の環境で検証することができたので、with SP1のインストールメディアから、Windows Server 2008 R2 SP1をクリーンインストールした。インストール後、Windows Updateを実行したが、エラーコード「80072EFE」が表示されてアップデートが失敗した。

    Microsoftで、通信の暗号化方式を変更したり、証明書が切り替わったりしているので、Windows Updateのプログラムが新しいものに対応していない。Windows Updateを行うために、Windows Update Agentだけを先に、新しいものをインストール必要がある。インストーラーのURLについては下記。

    http://download.windowsupdate.com/windowsupdate/redist/standalone/7.6.7600.320/windowsupdateagent-7.6-x64.exe

    なお、Windows10のEdgeやChromeでは、セキュリティ機能が邪魔をして、EXEファイルをダウンロードできない(いろいろと大変)。Windows Server 2008 R2のIEにURLを入力して開いた方が早い。

    参考:
    https://blog.engineer-memo.com/2022/03/31/windows-server-2008-r2-sp1-%E3%81%AB%E6%9C%80%E6%96%B0%E3%81%AE-windows-update-%E3%82%92%E9%81%A9%E7%94%A8%E3%81%99%E3%82%8B/

  • Windowsでtelnetコマンドの代わりにcurlコマンドを使う

    今、Windowsには、OSの標準機能として、telnetコマンドがインストールされていない。telnet接続のときのメッセージが表示されるかどうかであれば、curlコマンドで代替することができる。実際にTelnetのように操作できるわけではない。接続できるかどうかの確認のみだ。

    curl telnet://接続先のホストやIPアドレス:ポート番号

    実行例)

    C:\Users\zen>curl telnet://192.168.0.99:22
    SSH-2.0-OpenSSH_4.3
    ^C
    C:\Users\zen>curl telnet://192.168.0.99:25
    220 host.example.com ESMTP Postfix
    HELLO

    これで、そのポートがどのような反応を返してくるのかをみることができる。試したが、接続後にTelnetのようなインタラクティブなコマンド入力は通らないので、あくまでも接続時の反応確認のみだ。TelnetコマンドがWindowsにインストールされていないときの代替コマンドの1つとしてはあり。急場しのぎでの利用だろう。問題は、そのときに思い出せるのかどうかだ。

    ちなみに、接続先のポートが開いていて接続できるかの確認であれば、PowerShellのTest-NetConnectionコマンドレットを使う方が早いかもしれない。

    Test-NetConnection 接続先アドレス -Port ポート番号
  • GitLabo 16.4.0から16.6へは自動アップデートできた

    apt updateで、GitLabo 16.4.0から16.6へは自動アップデートできた。

  • Windows11 23H2へのアップデートが「oxc00000f0」エラーで失敗

    更新アシスタントを使ったWindows11 22H2から 23H2化が「エラーコード 0xc00000f0」で失敗した。

    一旦、キャンセルを押して終了させた後、完全シャットダウン(シフトキー押しながら、シャットダウンを選択)を行った。そのあと、再度、更新アシスタントを再度実行したところ、今度は成功し、Windows11 23H2になった。

  • VMwareが正式にBroadcomの配下になってしまった

    BroadcomによるVMwareの買収が完了したとのこと。カスタマー向けのお知らせメールも届いた。

    https://www.broadcom.com/blog/broadcom-announces-successful-acquisition-of-vmware

    はっきり言って、この先が不透明。オンプレ用のESXiは提供はされ続けるだろうけれど、新機能などはどうなるだろうか。枯れたシステムとして、保守されていくような気がしてならない。あとは、サポートの質がさらに悪くなる気がする。保守やライセンス継続のコストも心配なわけで。

    Symantec Endpoint ProtectionがBroadcomの配下になったときも、めちゃくちゃ使いにくくなった。というか、管理サイトやサポートサイトへのログインがめんどくさいことになった。この先の一年くらいで同じようになるのではないかと考えると、微妙な気持ちになる。

    VMwareのESXi以外となると、Hyper-Vか、Linux KVMか、Xenか。Windows OSを利用することを考えると、管理面を考えなければ、Hyper-Vなんだろうな。

  • アンチアフィニティルールを使うことで同一ホストでホットスタンバイのサーバが稼働するリスクを避けることができる。

    VMware(vSphere)のDRS環境で、同じホスト(同じハードウェア)で稼働させたくないサーバ群がある場合は、アンチアフィニティルールを設定する。

    アンチアフィニティルールを使うことで、クラスタを組んでいるサーバが同一のハードウェアで稼働しないようになる(仮想サーバ間の稼働ホストの排他制御のようになる)。これにより、ホストの物理サーバで障害が発生しても、クラスタを組んでいるサーバが一斉にダウンするということは避けられる。クラスタを組んでいなくても、ホットスタンバイのサーバも同時にダウンすることをアンチアフィニティルールの設定でさけることができる。

    アフィニティルールのマニュアル
    https://docs.vmware.com/jp/VMware-vSphere/8.0/vsphere-resource-management/GUID-94FCC204-115A-4918-9533-BFC588338ECB.html

  • 2023年11月の時点ではGASのJDBCからMySQL8.0に接続できる。

    ついにGoogle App Scriptから、JDBC経由で、Google CloudのCloud SQL のMySQL 8.0のインスタンスに接続を試して、成功した。JDBCがMySQL 8.0  に対応した。(忘れていたけれど、2022年11月も成功していたようだ・・・)

    なお、接続はSSL / TLS クライアント証明書による接続。

    GASサンプルコード:接続して、DB名とバージョンを取得する

    function myFunction() {
      dbConnectionSSL()
    }
    
    // --------------------------------
    // SSLで接続する
    // --------------------------------
    function dbConnectionSSL(){
      Logger.log('start dbConnection function.');
    
      // 接続先設定
      var connectionIp = '34.xx.xx.xx'; // 接続のMysqlのIPアドレス(ホスト名も可)
      var userName = 'username'; // 接続で使うユーザ名
      var passwd = 'passowrd'; // 接続で使うパスワード
      var databaseName = 'CT'; // データベース名
      var addr = 'jdbc:mysql://' + connectionIp + '/' + databaseName + '?useSSL=true';
    
      // SSL用の証明書を変数に入れる
      var clientKey = '\
    -----BEGIN RSA PRIVATE KEY-----\n\
    zylvsBC2kozS3rAxO1KUeD+rUbdDC/0PDbANXi4s/96qEN9vV80WBfH7Ut1TDdWt\n\
    ~~~中略~~~
    wGeppu4uYW4hSE6rATB+GhNwFJtAl1qz4M2nefKWBCc97wmZte/G\n\
    -----END RSA PRIVATE KEY-----';
    
      var clientCert = '\
    -----BEGIN CERTIFICATE-----\n\
    g+vn0NZqwTzhGhfXV9y7k0wsjqN3VjfvLSkSqinYRgDID/vb7FvAD3qyGyTiR9HT\n\
    ~~~中略~~~
    l+AUFjEP\n\
    -----END CERTIFICATE-----';
    
      var serverCa = '\
    -----BEGIN CERTIFICATE-----\n\
    pIa8Cnto3SIGqcwdV1SjA8iS1ohC3t+2igQq9aykOjd51jSQlVRqsE5lYty1VhiX\n\
    ~~~中略~~~
    fCcN9N2TqwxUXmD7g/+5lBi+wf+FBCPml/cyeRvDu5PZIqQ=\n\
    -----END CERTIFICATE-----';
    
      Logger.log('start mysql con');
      Logger.log(addr);
    
      var connectionInfo = {
        user: userName,
        password: passwd,
        _serverSslCertificate: serverCa,
        _clientSslCertificate: clientCert,
        _clientSslKey: clientKey
      }
    
      // DBにコネクションをはるオブジェクトを作る
      var connection = Jdbc.getConnection(addr, connectionInfo);
      Logger.log(connection.getCatalog());
    
      // Select文を実行するための処理
      // sqlステートメントをデータベースに送信するためのオブジェクトを作る
      var statement = connection.createStatement();
    
      // sqlを実行して結果をオブジェクトに入れる
      var result = statement.executeQuery('select @@version;');
    
      // 結果を取り出す
      while (result.next()) {
        var name = result.getString('@@version');
        // ログに出力する
        Logger.log(name);
      }
    
      // コネクションを閉じる
      connection.close();
    
      Logger.log('end');
    }
    
    // -----------------------------------
    // DB Connection close
    // -----------------------------------
    function dbConnectionClose(connection) {
      Logger.log('start db connection close');
    
      connection.close;  
    
      Logger.log('end db connection close');
    }