a stray sheep

お仕事周りの雑記帳

ブラウザによって異なるCSSを読み込む

やりたいこと

CSSを動的に読み込む。条件には、ブラウザ判別を利用する。

サンプルコード

<html>
<head>
  <link rel="stylesheet" type="text/css" href="./css/style.css" id="cs">
  <script>
    var ua = window.navigator.userAgent.toLowerCase();
  
    if (ua.indexOf('edg')) {
    // Edge (Chronium版)の場合(=最新版はこれ)
      document.getElementById("cs").href="./css/style_edg.css"
    }else if (ua.indexOf('edge')) {
    // Edge (Chronium版以外)の場合
      document.getElementById("cs").href="./css/style_edge.css"

    }else if (ua.indexOf('chrome')) {
    // Google Chromeの場合
      document.getElementById("cs").href="./css/style_chrome.css"

    }
  </script>
</head>
<body>
<h1>CSS動的読み込みのテスト</h1>
</body>
</html>

メモ

  • JavaScriptでのブラウザ判別には、navigatorオブジェクトのuserAgentプロパティを使う。
  • toLowerCase()は、文字列をすべて小文字に変換する。
  • indexOf()は、引数に指定した文字列が含まれていない場合は"-1"を返す。
  • getElementByIdで指定したタグに対して、hrefの値を変更する。

VagrantにTeraTermで接続する

やりたいこと

vagrantで作った仮想マシンTeraTermで接続する

TeraTermでログインする方法

パスワード認証でログインする

デフォルトでパスワード認証がオフになっているので、一度仮想マシンにログインして、設定を変更する

> vagrant ssh
$ sudo vi /etc/ssh/sshd_config
#PasswordAuthentication no
PasswordAuthentication yes

$ sudo systemctl restart sshd

TeraTermで、vagrant/vagrantでログインする

鍵認証でログインする

鍵の場所を確認する。IdentityFileがそれ。

> vagrant ssh-config
Host default
   HostName 127.0.0.1
   User vagrant
   ...
   IdentityFile C:/Users/xxx/.../.vagrant/machines/default/virtualbox/private_key

TeraTermで、ユーザ名:vagrant、鍵認証で上記のprivate_keyを指定する。

vagrant up すると、SSH auth method: private key で止まる!

状況

久々にvagrant を使って、仮想マシンを作ろうとするがうまくいかない。
どのOSや提供元(centos, bento, ...)を選んでも失敗する。

失敗するところ

vagrant up 中の「SSH auth method: private key 」で止まる。
そして、タイムアウトする。以下のメッセージが出た。

Timed out while waiting for the machine to boot. This means that Vagrant was unable to communicate with the guest machine within the configured ("configu.vm.boot_timeout" value) time period.
...

解決策

「仮想プラットフォーム」をオフにする(下図、参照)ことで解決した。(要再起動)

f:id:belial6:20220417215658p:plain

※「コントロールパネル」→「プログラムと機能」→「Windowsの機能の有効化または無効化」で確認。以前、Windows上のLinux環境「WSL」を入れてみたことがあったので、そのせいかな!?

DAZNにdアカウントでログインできなかったとき

先日dアカウントを変更した。
そのあと、DAZNにdアカウントでログインしようとしたところエラーが出て、ログインできなくなった。

エラー内容

問題が発生しました。
しばらく経ってから再度お試しいただきますようお願い申し上げます。
74-002-000

私の解決策

Wi-Fiではなく、キャリア回線で接続したところ普通にログインできました。

Powershellでリモートからドメインアカウントのパスワードを変更する

概要

スクリプトを使ってドメインアカウントのパスワードをリセットする

「ADサーバのIPアドレス\自分のアカウント」でパスワードを変更しようとすると、「拒否されました」となり、変更できなくなったのでこのスクリプトを作成した。
個人の作業マシンは、会社のドメインに参加しているため、ドメイン名ではアクセスできない。(hostsに書けばいいけど、それは面倒くさい、ということで・・・)

要件

  • スクリプトは、運用管理用サーバで実行する。(ユーザーはここに自分のアカウントでRDPログインできる。)
  • 運用管理用サーバは、ドメインに参加していない。
  • ユーザー自身でパスワードをリセットする。
  • ADサーバへのアクセス時にAdminstratorのパスワードを入力させたくない。

環境構成

[自分の作業マシン] ---(RDP)---> [運用管理用サーバ] -------> [ADサーバ] (IP: 10.1.1.1)

参考にしたサイト

パスワードを暗号化してファイルに保存しておく方法や、そのファイルを使ってコマンドを実行する方法については、こちらを参考にしました。
dev.classmethod.jp

Administratorのパスワードを暗号化してファイルに保存しておく

ドメインアカウントの変更なので、ADサーバにアクセスする必要があるが、アクセス時にAdministratorのパスワードを入力させたくない。

以下のコマンドでファイルを作成。アカウント、パスワードを入力するダイアログが表示されるので、Administratorユーザ、パスワードを入力する。

PS> $FilePath = "C:\Temp\cred.sec"
PS> $Credential = Get-Credential
PS> $Credential.Password | ConvertFrom-SecureString | Set-Content $FilePath

対話形式でアカウントや新しいパスワードを入力し、パスワードをリセットする

resetpassword.ps1

$FilePath = "C:\Temp\cred.sec"
$Username = "10.1.1.1\Administrator"
$EncryptedCred = Get-Content $FilePath | ConvertTo-SecureString
$Cred = New-Object System.management.Automation.PSCredential($Username, $EncryptedCred)

$DomainAccountName = Read-Host "アカウント名を入力してください"
$NewPassword = Read-Host "新しいパスワードを入力してください" -AsSecureString

Write-Host "パスワードをリセットします"
Set-ADAccountPassword -Identity $DomainAccountName -Reset -NewPassword $NewPassword -PassThru -Server 10.1.1.1 -Credential $Cred

# ここはおまけ
if($? -eq "True"){
    Write-Host "処理が成功しました"
}else{
    Write-Host "処理が失敗しました"
    Write-Host "エラーの原因: " + $error[0].CategoryInfo.Reason
}




2022.3.1 追記

自分のアカウントではこのスクリプトで良かったが、ほかの人にやってもらったエラーが出た。
「指定された状態で使用するには無効なキーです」と・・・。
調べると異なるアカウントだと鍵が変わってしまって復号できないようだ。

異なるユーザで暗号化・復号化を行うように対応する

Administratorのパスワードを暗号化してファイルに保存しておく

デフォルトのDPAPIではなく、AESを使って暗号化する。AESを使うにはKeyオプションを使う。

以下のコマンドでファイルを作成。アカウント、パスワードを入力するダイアログが表示されるので、Administratorユーザ、パスワードを入力する。

PS> $FilePath = "C:\Temp\cred2.sec"
#暗号化用のバイト配列を作成(192bit)
PS> [byte[]] $EncryptedKey = (3,4,2,3,56,34,254,222,1,1,2,23,42,54,33,233,1,34,2,7,6,5,35,43)
PS> $Credential = Get-Credential
#パスワードをAESで暗号化してファイルに保存
PS> $Credential.Password | ConvertFrom-SecureString -key $EncryptedKey | Set-Content $FilePath

異なるユーザを使ってパスワードをリセットする

resetpassword2.ps1

$FilePath = "C:\Temp\cred2.sec"
$Username = "10.1.1.1\Administrator"
#暗号化で使用したバイト配列(上と同じもの)
[byte[]] $EncryptedKey = (3,4,2,3,56,34,254,222,1,1,2,23,42,54,33,233,1,34,2,7,6,5,35,43)

#暗号化に使用した$EncryptedKeyを用いて復号化
$EncryptedCred = Get-Content $FilePath | ConvertTo-SecureString -key $EncryptedKey
$Cred = New-Object System.management.Automation.PSCredential($Username, $EncryptedCred)

$DomainAccountName = Read-Host "アカウント名を入力してください"
$NewPassword = Read-Host "新しいパスワードを入力してください" -AsSecureString

Write-Host "パスワードをリセットします"
Set-ADAccountPassword -Identity $DomainAccountName -Reset -NewPassword $NewPassword -PassThru -Server 10.1.1.1 -Credential $Cred

# ここはおまけ
if($? -eq "True"){
    Write-Host "処理が成功しました"
}else{
    Write-Host "処理が失敗しました"
    Write-Host "エラーの原因: " + $error[0].CategoryInfo.Reason
}

ドコモ光からNURO光 for マンションに変更した

現在のプランと変更の動機・理由

会社の人事制度変更に伴い、給料が大幅に減るので、固定費を削減したい。
ahamoにしたいが、セット割がなくなる。なら、安いNuro光に。
ドコモ光の解約違約金などがかかるが、キャッシュバックもあり、トータルではお得。

住宅情報

  • マンション
  • Nuro光 for マンションは導入済み。
  • マンション利用者は10人以上(なので、費用は2,090円/月)

申込から開通まで

2/7 22:00頃 Webから申込

確定後、「オンライン工事予約に進む」ボタンを押したら、405エラーが出た。
焦りつつ・・・、調べたら書いてあった。「工事予約できない、または予約されない場合は、後日SMSまたはお電話にて工事日調整のご連絡をいたします。」と。
ご利用までの流れ | NURO 光 for マンション

2/8 9:00頃 SMSで受付連絡
2/8 18:00頃 SMSで工事希望日予約の案内が来る
   ⇒"2/16 午前"で予約 ※工事予約は2/12とか、もっと早く指定できた。
2/10 13:00頃 SMSで宅内工事日決定の連絡
2/11 はがき「契約内容通知書」が届く
   ⇒NUROマイページにログインすると、マンション内の加入数が見れた。うちは70人超。
2/15 工事担当者から、何時ころ行くかTELあり
2/16 工事、開通

当初からNTTの光回線が部屋内まで来ているので、とくに配線工事等は必要なく、Nuro光から提供されるONUを設置して既存の光コンセントとつなぐだけ。
訪問から終わるまで40分ほどでした。

ドコモ光およびプロバイダの解約

Nuro光が開通し、もうドコモ光はいらなくなったので即刻解約手続きへ。
ドコモ光の解約 | ドコモ光 | NTTドコモ

  • ドコモなので、151に電話
  • 7→1→4で案内スキップできる。ドコモのサイトでもそのように案内されてる。(7:ドコモ光、1:各種手続き、4:解約)
  • ネットワーク暗証番号を入力
  • 電話がつながるのを待つ。今回は、30秒くらいでつながった!!
  • あとは、会話しながら解約を進める。

主な内容

  • 即日解約できる。
  • 解約違約金の説明。
  • プロバイダは一緒に解約されるので何もしなくてよい。
  • 廃止の工事は、遠隔で操作するので、何もしなくていい。信号を止めるだけ。
  • NTTもしくはドコモから借りているONUは、後日回収キットを送ってくれるので、送り返す。
  • プロバイダのルーター等の返却は各プロバイダの指示に従う。GMOとくとくBBは、契約から37カ月以内なら返却する必要があるので、返す。

おわりに

申込から開通、解約まで10日ほどで完了。割とスムーズにできて、満足。

HPE DL360 Gen10 にWindows Server 2019をインストール。2TB超、GPT変換あり。

概要

HPE ProLiant DL360 Gen10 にWindows Server 2019をインストールする。 ハードディスク容量は、RAID10で約4.8TBであり、パーティションMBRではなくGPTにしないとディスクをまるごと使ってインストールできない。

環境

  • HPE ProLiant DL360 Gen10
  • Smart アレイ P408i-a SR Gen10 コントローラー
  • ディスク容量 約4.8TB
  • 初期パーティションMBR
  • OSは、Windows Server 2019

Windows Server 2019のインストール

  1. Windows Server 2019のDVDメディアを挿入し、サーバを起動する。
  2. 起動途中で、[F11] Boot Menuを選択し、CD/DVD ROMからの起動を選択。[F12] で保存して終了する。再起動される。
  3. 「Press any key to boot from CD or DVD ......」と表示されたら、何かキーを押す。★1:Networkブートされてしまう場合
  4. Windows Setup [EMS enabled]」を選択して、Enter f:id:belial6:20211118084848j:plain
  5. Windows Server のインストールが開始される。インストール場所の選択までは任意に選択していく。
  6. インストールする場所の選択が以下のように表示される。警告の「詳しい情報」には、「EFIシステムでは、GPTディスクのみにWindowsをインストールできます。」と出ている。これは、OSをインストールするにはGPTに変換しないといけないということ。   f:id:belial6:20211118090339j:plain f:id:belial6:20211118091430j:plain
  7. インストール場所の画面で、Shift + F10 を同時押しして、コマンドプロンプトを起動する。   f:id:belial6:20211118092026j:plain
  8. 図のようにコマンドを実行し、ディスクの状態を確認する。今回の環境では、ディスク0 のサイズは4TBだが、GPTではないため2TBまでしか使えないことを確認。   f:id:belial6:20211118092212j:plain
  9. 図のように、ディスクを選択(select disk 0)し、掃除(clean)、そしてGPT変換する(convert gpt)コマンドをそれぞれ実行する。実行後、再度ディスクの状態を確認し、GPTに変換されていること、ディスクを4TBまで認識できていることを確認する。   f:id:belial6:20211118092317j:plain
  10. ディスクの変換が完了したら、まずexitコマンドでdiskpartを終了し、再度exitコマンドでコマンドプロンプトを閉じ、インストール場所の画面に戻る。
  11. インストール場所の画面で「最新の情報に更新」を押す。変換されたドライブが表示される。ドライブが1つになり、容量が約4TBになりました。 f:id:belial6:20211118092432j:plain
  12. 今度は「新規」→「適用」をクリックし、パーティションを作成する。図のように、Microsoft推奨のパーティション構成となる。 f:id:belial6:20211118092521j:plain
  13. 「ドライブ0 パーティション4 」(容量 約4TB)を選択して、「次へ」をクリックする。インストールが始まりました。

これで、無事 Windows Server 2019がインストールされた。以上。

メモ

★1:Networkブートされてしまう場合

「Booting Embedded FlexibleLOM Port1 ...」のように、Networkブートが始まって、DVDから起動できない場合があった。ここは、DVDからの起動を数回試みることで、次に進むことができた。以下のサイトが参考になった。 www.ipentec.com