IPアドレスからホスト名を調べたい~BATファイルを実行してもらう

遠隔地の拠点でネットワークトラブルがあり、ログを収集したところIPアドレスは記録されている事が分かった。しかしIPアドレスの割当はDHCPで行っており、また複数の会社で共同利用しているネットワークなので、接続されているPCを把握出来ていない。

ログの収集と同じタイミングで、NBTSTATコマンドを実行して調査をすれば当該IPアドレスのホスト名を突き止めることが出来るが、拠点のユーザーにはあまり手間をかけさせたくないので、BATファイルを作ることにした。

実行するコマンドを記したBATファイル

対象とするIPアドレスをリスト

この2つのファイルを、デスクトップに置いて、BATファイル(load-list.bat)を実行してもらう。するとデスクトップに「logfile.txt」というコマンドの実行結果が得られる。

BATファイルの置き場所(PATH)を自動的に認識させる方法もあったと思うが、面倒なので「デスクトップ」に置いて実行という条件のもとに簡単に作成した。

処理的には一切複雑な事をせず、洗練されていないのでコマンドを実行した結果がログファイルに記されるだけ。それでも遠隔地で(リモート操作は制限されているので不可)実行したいコマンドを簡単に処理させてもらえるので、ユーザーにも指示(依頼)しやすく、こちらとしても知りたい結果が得られる。

実行(収集)結果は電子メールに添付して送り返して貰った。

BATファイルで別ファイル(リスト)を読み込む手法は、応用が利くので利便性は高いと思われる。カンマ区切りにも対応出来るので、詳しくはbatファイル内でfor文を使う事例を検索すると良いでしょう。

私はプログラマーでは無いので複雑な事よりも、手早く結果がえられるシンプルさを優先します。リストからIPアドレスを一行ずつ読み込んで変数に取り込んで実行するだけのループ処理でも十分使えると思っています。

Windows 7のリカバリー後にWindows Updateが全然進まない件で備忘録

長期間使用されてPC環境が汚れていると思われるPC、しばらく予備機としてストックしているので、この機会にシステムリカバリーを行って、すぐに使用出来る様に備えることにした。

メーカーのリカバリーディスクを使用してハードディスクを消去後、Windows 7 Professionalをリカバリー。真っ新なOS環境が手に入った。今までならこの後に必要なアプリ(Office等)をインストールするだけで良かったが、最近は、Windows Updateが進まないという不具合があるのでこの課題をクリアして置く必要がある。

結果的には下記の順番で修正パッチを適用してやれば、無事にWindows Updateが進むようになった。れっきとした「トラブル」だと思うがマイクロソフトはそう認識していない様なので、無用な労力(スキル)を要求される。

KB976932 (windows7 SP1)※7無印の場合のみ必要
IE9の場合はIE11にアップデートする
KB3020369 (Rollupパッケージの事前必須パッケージ)
KB3125574 (Rollupパッケージ)
KB3145739 (2016年4月アップデート時短効果確認済み)
KB3161664 (2016年6月アップデート時短効果確認済み)
KB3102433 (.Net Framework 4.6.1)
KB3172605 (Rollupパッケージ)

IO DATA Landiskのリペア~HDL-A2.0のHDDを交換する

当方では、IO DATAのNASアプライアンス(LANDISK)を使用していますが、この製品はシステム的には冗長性を持たせられない仕様の為、内蔵ハードディスクが故障するとゴミに成り下がる脆さを持っています。データに関してはバックアップ機能で冗長性を確保出来るので、当然の事ですがデータ領域のバックアップの仕組み(外付けUSB-HDDへ定期的にコピー)は必ず利用すべきです。

しかしながら、バックアップでデータは保護出来たとしても、本体(NAS)のHDDが壊れるとどうしようもありません。今回運悪く、そのケースに遭遇してしまいましたが、もう一台のLANDISK(サイズ違い)から領域をコピーしてリペアに成功したので記録します。

まず当方の環境です。

  • HDL-A1.0
  • HDL-A2.0(こちらのHDDが壊れた)

両方ともケースを開けて内臓HDDを確認してみたのですが、Seagate製のハードディスクが使用されていました。HDL-A1.0には1TBのHDDが入っていましたが薄型のHDDで、HDL-A2.0には標準の厚みのHDDが使用されていました。

DSC_1898

リペア計画

HDL-A2.0の内臓ディスク(2TB)を別途調達し、HDL-A1.0のHDDをクローニングしてまるごとコピーします。その後、GParted等でパーティションを目一杯まで拡張する計画です。

HDDtoHDD

HDDのクローニング

今回は手っ取り早くクローニング装置を使用することにしました。いわゆる「裸族のお立ち台」っぽく剥き出しの状態でHDDを装着できる構造になっています。USB変換アダプター製品にクローン機能がついたものです。私はnovacの製品(NV-HSC374U3)を使用しています。

DSC_1888

部屋の片隅でクローニングです。2.5インチ用のスペーサーは付属していますが、スリム3.5インチの事は考慮されていないので隙間があいており、しっかり固定されないので動かさないように注意してクローン化されるのを待ちます。

DSC_1896

つきっきりでいた訳ではないのでざっくりとした時間ですが4時間位かかった様です。ディスク容量によって時間が当然かかるようです。

とりあえず動作確認

クローニングが終わった2TB HDDをNAS装置に仮固定して動作させてみます。

DSC_1899

当然の事ですがこの段階では領域をフルに使用していないので1TB相当のNASで動作するはずです。先のステップに進む前に段階的に動作確認を進めることは大切だと私は思っています。NASとして正常起動を確認できたら次のステップに進みます。

Ubuntuでパーティションを拡張する

LandiskはLinux系のシステムを利用しており、ファイルシステムにXFSを使用しているらしいので、最初からUbuntu環境で作業することにします。

Screenshot from 2016-08-20 18_38_58

パーティション(スライス)分割されていて一見すると面倒くさい事になっていますが、要点はXFS(一番領域が広い(大きい)パーティション)が作業のターゲットです。上図で言うとsdb6がターゲットです。927GBしか割り当てられていないことと、未割り当てが931GBあるのがポイントです。sdb6をめいっぱい拡張するのが目的です。sdb6を指定してリサイズを実行します。

Screenshot from 2016-08-20 18_40_11

最小サイズと最大サイズが表示されているので、新しいサイズの数値に「最大サイズ」の数値を入力して目一杯広げます。上下ボタンで数値をアップさせても良いですが私は数値入力派です。

Screenshot from 2016-08-20 18_41_23

これで後方の空き領域が0になったので可能な限り(目一杯)拡張する指定をした状態です。右下にある「リサイズ/移動」ボタンをクリックすると指定は完了です。

Screenshot from 2016-08-20 18_41_43

狙い通り、sdb6が残りの領域を全て使うイメージになりました。緑色のレ点ボタンをクリックすると適用開始です。他にもやりたい作業があるならレ点をクリックする前に済ませます。パーティション操作は結構複雑な処理をしているので余計なことは極力避けることを推奨しておきます。

Screenshot from 2016-08-20 18_42_03

確認画面が出ましたので「適用」をクリックします。

Screenshot from 2016-08-20 18_42_28

「/dev/sdb6を927.39GiBから1.82 TiBへ拡大」する処理が行わわている事が分かります。処理中はオレンジ色のバーが左右に動いて処理中であることが分かるようになっています。

Screenshot from 2016-08-20 18_42_47

無事にパーティション(スライス)の拡張が完了しました。ホッと一息です。

Screenshot from 2016-08-20 18_43_25

うまく拡張できていることが見て取れると思います。

NASに装着して動作確認

完了したHDDをNAS(Landisk)本体に装着して動作確認を行います。

ステータス表示領域にディスクの状況が表示されています。

Screenshot from 2016-08-20 18_58_40

無事に、1949.06GBまで拡張されているので、約2TBのNASとして動作する様になったという訳です。

今回のリペアをもう一度振り返ると、

  1. 2TBのNASが壊れた
  2. 1TBのNASのHDDから2TBのNASのHDDにクローン
  3. クローン側の空き領域をUbuntuで調整

というシンプルな作業でした。手間は大したことありませんが処理時間はそこそこかかります。

2TBのNASが壊れた時にただのガラクタに成り下がったのを悲観しそうになりましたが、同一シリーズの1TBを持っていたので行けるんじゃないかと考えて実行したところ、無事に成功して良かったです。

クローニング機能付きのUSB HDDアダプターを持っていると手軽にクローンを作成出来るのでシステムの早期復旧の備えなど、冗長性をもたせられないシステムの保護手段としても使えて便利だと思います。バルクで安いHDDを買って時々まるごとバックアップを取る等の目的にも使用出来ますね。単純な変換アダプタもそこそこの価格ですので、個人的にはクローニング機能付きアダプターはオススメしておきたいアイテムの一つです。

追記

2TBの方のリペアが終了したと思いきや、翌日になんと1TBの方のHDDもダメになってしまいました(なんという絶妙なタイミング)。ハードディスクがシーク音でギュイーン、カツーン、カツーンと繰り返し鳴る様になってしまい、USBアダプタで接続してWindowsでもLinuxでも認識出来なくなりました。

ちょっと怪しい挙動は出ていたのですが立て続けにHDDがダメになるとは・・・Seagate製は耐久性が低くてダメかも知れませんね。

Windows 7のプリンターテストページのドライバ情報をテキストデータで欲しい

法人環境でネットワークプリンターへの印刷時にトラブル発生。

印刷データが消失するPCと、そういう不具合が起きないPCとに分かれてしまった。印刷したハズなのにプリンターから出てこないPCは複数台あり、決まったPCでこの不具合が起きていることまで突き止めている。

そこでプリンタードライバの差異で、不具合が出る or 出ないの違いがあるのではないか?と言う推測をした。手っ取り早くドライバ情報を比較したいが遠隔地のPCでかつ台数も多い事がネックである。

プリンターテストを行うと紙に印刷される事は分かっているが、紙に印刷したものは比較しづらい(DIFFとか使えない)のでチェックするのが面倒だ。50台以上を目でチェックとなると本当に嫌になる。

そこで、バッチ処理でプリンター情報を取り出せないかなと言う発想になったが、そういえばプリンタードライバ情報を出力するVBSがWindowsに標準でついていた様な覚えがある。vbsのファイル名は覚えてないが、確かにvbsだったと記憶している。

エクスプローラで検索してみるとそれらしいファイルが入っているフォルダが見つかった。C:\windows\System32\Printing_Admin_Scripts\ja-JP

  • prncnfg.vbs
  • prndrvr.vbs
  • prnjobs.vbs
  • prnmngr.vbs
  • prnport.vbs
  • prnqctl.vbs
  • pubprn.vbs

ファイル名から容易に”prndrvr.vbs”がプリンタドライバ情報を出力してくれるであろう事は推測出来る。コマンドプロンプトから

これでドライバ情報を全て出力出来るので、別名ファイルへリダイレクトすれば目的は達成出来た。後はAWKでチェックしたい部分を抜き出してDIFFで比較チェックすれば差異を見つけられる。

幸いWindows 7にはこのVBSファイルが標準で入っているので、バッチファイルで叩いてデスクトップ等に情報を保存させれば、メールで送って貰う事も可能だろう。

ちなみにこのコマンドで使えるオプションの詳細を見たければヘルプコマンドで

たったこれだけの事だが知っていると知らないとでは大違い。出来たハズという記憶だけでも残しておくといざという時に横着出来るので、やっぱり覚えておきたい。次に使うのはいつになるか分からないけれど。

Windows Updateを2年以上実行していないPCで不具合~「WSUS Offline Update」で対処

職場ではネットに接続せずに事務処理専用にしてPC(Windows 7)を使っている部署があります。アプリは業務アプリが時々バージョンアップしているので、CD-Rで更新モジュールを読み込みネットに接続しないままアプリの更新(バージョンアップ)をして使用しています。

しかし、なぜか最近になってこのオフラインで使用している業務アプリのPCが複数台、不可解なトラブルが多いと言うので、ウィルス対策ソフトをインストールして、ネットに接続してWindows Updateを行う事にしました。セキュリティパッチを適用してくれと指示されたからです。

しかし、トラブルに遭遇しました。Windows Updateにはバグがあるらしく、待てどもWindows Updateの確認が進んでいきません。一時間、二時間と時間を無駄に待たされたのですが進む気配がありません。

もちろんWindows Update Clientは最新にしました。Windows Update Clientにもバグがあるとかでメモリーオーバーフローを起こしたりして処理しきれないという不具合もあるらしいです。KB3138612

ほとほとマイクロソフトには呆れてしまいますが、オフラインで使用しているアプリでも、開発環境のライブラリ等が更新されていく事で不具合に繋がることが今回の様に起こることがある様です。たかだかOSの分際でアプリに影響を出すというのも勘弁して欲しいと思うのですが、マイクロソフトの製品は、複雑に依存関係を作っているのでやむを得ない状態なのも理解はしています。

今回、Windows Updateがとにかく進まない状態になってしまったので、ネットワーク接続しているPCでマイクロソフトパッチをダウンロードして適用する方法に頼ることにしました。下記が参考になります。

【レビュー】Windows/Officeのオフラインアップデートディスクを作成「WSUS Offline Update」 – 窓の杜

具体的にはアプリをダウンロードして、OSと32bitか64bitを選択し、Officeの言語を選択等、任意にダウンロードしたいパッチを選択して実行すると、ローカルにMSパッチをダウンロードして適用のための実行ファイルも生成してくれます。オプションによってISOファイルを生成する事も出来ますので、複数台に適用する場合はDVD-R等に焼いて展開する事も可能なので便利です。

今回、Windows Updateが待てども進まない状態、エラーで止まる状態から先に勧めない状態に陥ってしまいましたが、WSUSの仕組みをオフラインで実現するこのアプリのおかげで先に進めました。残り数個は通常のWindows Updateで処理して最新の状態にこぎ着けました。

その結果、不可解な遅さは解消され、キビキビと業務アプリが動作する様になりました。オフラインで使用するアプリでもアプリ自体がバージョンアップする仕様の場合は、実行環境の更新が必要になることもあるんだという事を再認識させてもらったケースでした。

また、このアプリ「WSUS Offline Update – Update Microsoft Windows and Office without an Internet connection」には、他のPCでも有効に活用出来る可能性があるのではないかと感じていますので(ネットが遅い環境でWindows Updateが遅くて困ってるとか)、こういう方法とツールが考えだされていることを覚えておこうと思います。

追記(2016/11/01)

Windows7のWindows Updateが全然進まない件の対処方法(現時点)
以下の順番で適用すると良いという情報があったので記しておきます。
Windows Update カタログからKB番号で検索し、IEでダウンロード出来ました。
Firefoxではダメでした。

KB976932 (windows7 SP1)※Windows 7無印の場合のみ必要
KB3020369 (Rollupパッケージの事前必須パッケージ)
KB3125574 (Rollupパッケージ第一弾)
KB3145739 (2016年4月アップデート)
KB3161664 (2016年6月アップデート)
KB3102433 (.Net Framework 4.6.1)

しかしいっこうに進まないので更にリサーチしたところ、ロールアップには更なる情報があった。

KB3172605 (Rollupパッケージ第三弾)

KB3172605を適用して再起動するとすんなりと進むようになった。
その後、見つかった更新は78個と比較的少ない。

しかし、本当に身にならないどうでも良いスキル(知識)ですな、Windows Update不具合対処方法なんて・・・