たまに掃除は必要!熱暴走…

イメージ
 そんなに暑くないのに… 本日、午前中にオンラインで打合せをしていると、突然マシンがダウン。 一瞬、停電か?と思ったもののディスプレイの電源は入っている。 あれっ?と思い、すぐさまノートで打合せを継続。 その間に、再度マシンの電源を投入。 問題なく起動する。 でも、CPU温度がたまたま目に入り、95℃を超えて徐々に上昇していく。 105℃あたりで再度マシンダウン。 これは、熱暴走によるダウンの可能性が高い。 以前、CPUをRyzen7→9にした頃は、60℃〜70℃程度だった記憶がある。 本当はGW中にSSDの載せ替えを行う予定だったけれど、忙しくて先延ばしにしていた。 その時やっていれば、多分掃除もしただろうに…。 ということで、午後からマシンを解体し、掃除をすることに。 ケース本体のFANはホコリがかなり溜まっている。 GPUのFANは問題ない。 電源とCPU FANはひどい。 一旦、CPU FANを取り外し、きれいにする。ついでにCPUグリスも塗り直しセット。 動作確認すると、投入直後で40℃台。 そりゃ、熱暴走も起こすわけだ。 せっかくバラしたので、SSDの載せ替えを実施。 OSは500GBで、ユーザ領域(/home)は1TBを使用しているもののAIのmodelをいくつも落としていたり、DockerのImageが多種置いてあるため、結構容量を食っている。 今回、2TBのSSD( Hanye SSD ¥17,800- で入手済)を用意してあるので、 1TB→2TB, 500GB→1TBと玉突きで移動させることを計画していたので実施する。 本当は、ddコマンドで移すつもりだったのだけれど、3月にお客さんのところで使いそうだったので、 ORICOのクローン機能付SSDアダプタ を入手済。 裸族のSSD版ですね…。1万円程度の品です。 これに、新品のSSDとこれまでの1TBのSSDを差し込んでクローン開始。 そこそこ時間はかかるものの、放置でOK。 ただ、HanyeのSSDについているヒートシンクが引っかかるため、一旦取り外してクローン後取り付ける必要があった。 続いて、500GB→先程の1TBに書き込み。 ただ、1TB(samsungの980pro)が、先程のクローンでかなり熱くなっていたため、速度低下が激しい感じ。1TB→2TBよりも時間がかかった感じ。 ...

ログオン・スクリプトの作成

Active Directoryでのユーザに

構築も終盤になってきて、ユーザの要望に合わせた設定を行なっていく。手こずりネタ第3弾ww。
現在NASのに保存されているデータをファイルサーバ上に移動させて、そこを利用することに。
これまでのままでは、使い勝手が悪いので、ネットワーク上のドライブに個人用の領域を確保する。
方針としては以下のとおり。

  1. private領域(他人からは参照されない)
  2. public領域(全職員が共有する。読み書き可能)
  3. group領域(特定のグループだけが読み書き可能。)
3つめのGroup領域は、必要に応じて複数存在させる。
これと、役職の関係が出てくるので、よく考える必要がある。
  • 管理職は、全ての領域(1〜3)が読み書き可能。
  • groupメンバーは、自分のgroupとpublicが読み書き可能。
  • それ以外の、一般職員はpublicのみ。
  • そして、全員にprivate領域の読み書き可能権限を与える。
とまあ、表にしたほうが早いかもしれない。

ログオン・スクリプトの作成

net useで処理することが、多かったけど、今回は別の方法を試して見ることに。
マイクロソフトのページを参考に、書き換えてテストすることに。
先ほどの方針に従って、書き換える。プリンタはとりあえず考慮しない。
Const MANAGER_GROUP = "cn=manager"
Const SUPPORT_GROUP = "cn=support"
'Const STAFF_GROUP   = "cn=staff" 
Set wshNetwork = CreateObject("WScript.Network")
'wshNetwork.MapNetworkDrive "i:" , "\\dc01\home$\" & wshNetwork.UserName
wshNetwork.MapNetworkDrive "s:" , "\\dc01\staff" 
Set ADSysInfo = CreateObject("ADSystemInfo")
Set CurrentUser = GetObject("LDAP://" & ADSysInfo.UserName)
strGroups = LCase(Join(CurrentUser.MemberOf)) 
If InStr(strGroups, MANAGER_GROUP) Then
    wshNetwork.MapNetworkDrive "m:" , "\\dc01\manager"
    wshNetwork.MapNetworkDrive "n:" , "\\dc01\support"
ElseIf InStr(strGroups, SUPPORT_GROUP) Then
    wshNetwork.MapNetworkDrive "n:","\\dc01\support"
End If
全体が共有するpublicエリアは、グループに関係なく掴む必要があるので、最初に掴ませてます。(sドライブ)

praivate領域は、ホームフォルダでマッピングするので、スクリプト内ではコメントアウトしてあります。

そうすると、グループstaffを判定に使う必要もないので、最初の方ででコメントにしました。

結局これで動作したんだけど、ここまでたどり着くのに、苦労しました。

まず、マイクロソフトのページのサンプルスクリプト通りだとエラーが発生すること。
If InStr(strGroups, ENGINEERING_GROUP) Then
wshNetwork.MapNetworkDrive "g:",
"\\FileServer\Engineering\"
ドライブをマッピングするところで、UNC(汎用名前付け規則)で書くわけだけど、サンプルのように最後に¥(\)を入れるとエラーが発生するのだった…。orz

マイクロソフトさん!ちゃんと動作確認行なってくれよ〜。

でもって、ここにたどり着くのに結構時間がかかりました。
net useを利用したbatを書いてみたりもして…。
で、ログオンスクリプトを配置…?どこに?
とな。確かNETLOGONの下の…という記憶はある。でも、ADのプロパティからファイル表示をさせてやった場合のパスはGUID¥User¥script¥logonとなっている。
どこを使うのが正しいのや?
と調べてみると、ちゃんとあった。

これは綺麗にまとまっているので、とっても助かる。(重要なのでコピーしておこう)

Windows 2000/XP/2003 ログオン/ログオフスクリプトの場所

○ スクリプトの種類
スクリプトの種類 実行タイミング サポート OS
Windows
2000/XP/2003
Windows
NT/95/98/Me
ログオンスクリプト ユーザーログオン時
ログオフスクリプト ユーザーログオフ時 -
スタートアップスクリプト コンピュータ起動時 -
シャットダウンスクリプト コンピュータシャットダウン時 -
○ グループポリシーを使用したスクリプトの場所

グループポリシーを使ってドメインや OU、サイトなどににスクリプトを割り当てる場合は、ドメインコントローラの以下の場所に保存する。
ログオンスクリプト(グループポリシー: ユーザーの構成)
  %SystemRoot%¥SYSVOL¥Sysvol¥ドメイン名¥Policies¥GUID¥USER¥Scripts¥Logon
ログオフスクリプト(グループポリシー: ユーザーの構成)
  %SystemRoot%¥SYSVOL¥Sysvol¥ドメイン名¥Policies¥GUID¥USER¥Scripts¥Logoff
スタートアップスクリプト(グループポリシー: コンピュータの構成)
  %SystemRoot%¥SYSVOL¥Sysvol¥ドメイン名¥Policies¥GUID¥MACHINE¥Scripts¥Startup
シャットダウンスクリプト(グループポリシー: コンピュータの構成)
  %SystemRoot%¥SYSVOL¥Sysvol¥ドメイン名¥Policies¥GUID¥MACHINE¥Scripts¥Shutdown
ということなので、Logonの下に置くのがよさそう。
で、試してみた。

ちゃんと、ドライブをマッピングできることを確認!
OKでございます。時間はかかったものの、目的は達成。

コメント

このブログの人気の投稿

Ubuntu24.04 でGUIが死んだ

VirtualBoxが異常

MEGAにも弱点があった?