2007年8月アーカイブ
うかつにもnblookupを知らなかった。
winslookup作成途中だったのに。。
http://support.microsoft.com/kb/830578
NBLookup を使えば、WINSサーバにてNETBIOS名→IPアドレス等が確認できる。
WINSサーバが指定できるのがミソ。nslookupのWINS版。主にトラブル解決時など
例1) ファイルサーバfilesvr1を探す
C:\util>nblookup /s 169.254.1.10 /x 20 filesvr1
Recursion is on
Querying WINS Server: 169.254.1.10
NetBIOS Name: filesvr1
Suffix: 20
Name returned: FILESVR1
Record type: Unique
IP Address: 192.168.1.123
例2) SHIODOM ドメインのドメインコントローラを探す
C:\util>nblookup /s 169.254.1.10 /x 1C shiodom
Recursion is on
Querying WINS Server: 169.254.1.10
NetBIOS Name: shiodom
Suffix: 1C
Name returned: SHIODOM
Record type: Group
IP Address: 192.168.1.10
例3) SMSサーバ(サイトコード ZX1)を探す
C:\util>nblookup /s 169.254.1.10 /x 1A MP_ZX1
Recursion is on
Querying WINS Server: 169.254.1.10
NetBIOS Name: MP_ZX1
Suffix: 1A
Name returned: MP_ZX1
Record type: Unique
IP Address: 192.168.1.124
例4)問い合わせ一覧をファイル(list.txt)に記載して一括問い合わせ(kekka.htm作成)
nblookup /ql list.txt /qr kekka
;list.txt中身--------
NBLookup
[wins~server] WINS1
computer1,00
DOMAIN1,1C ;DCs;-------------------
##結果がリストにならず使いづらい
大体同じ事をするスクリプト。バッチとVBScript とPowerShellで作成してみた。
ソースはこちら DoList.zip
1)バッチ
if not exist list.txt (
echo list.txt ファイルがありません >> share.log
exit
)
for /F %%S in (list.txt) do (
echo %%S >> chk.log
)
2)VBScript
on error resume next
Dim fso,theFile,theLog,s
Set fso = CreateObject("Scripting.FileSystemObject")
Set theFile = fso.OpenTextFile("list.txt",1,False)
Set theLog = fso.OpenTextFile("chk.log" ,8,True)
if err.number <> 0 then
theLog.WriteLine("ファイルlist.txtが見つかりません")
else
Do While theFile.AtEndOfStream <> True
s = theFile.ReadLine
theLog.WriteLine(s)
Loop
theFile.Close
end if
theLog.Close
3)PowerShell
#ここでwrite-outputは要らないが他で転用のために記載
if (Test-Path list.txt) {
foreach ($s in (get-content list.txt)) {
#write-output $s >> check.log #UTF8になる
write-output $s | add-content -encoding String check.log
}
} else{
write-output "ファイル list.txt がありません" |add-content -encoding String check.log
}
3)'PowerShellその2
# PowerShellは以下でも同じ。alias利用。
if (Test-Path list.txt) {
foreach ($s in (gc list.txt)) {
echo $s |ac -enc String check.log
}
} else{
echo "ファイル list.txt がありません" | ac -enc String check.log
}
3)'' PowerShell その3
# foreachの少し違う使い方。foreachは%でも置き換えられる。
if (Test-Path list.txt) {
gc list.txt| foreach { echo $_ | ac -enc String check.log}
} else{
echo "ファイル list.txt がありません" | ac -enc String check.log
}
バッチで簡易作成。
list.txt とchkping.batを同じディレクトリに保存して実行。
list.txt にはサーバ名とトラブル時記載内容を記録。
バッチ内のfor 文中だと、%errorlevel%判定がうまく動かないのでcallで切り出した。
list.txt
chkping.batlist.txt --------
#サーバ名,chkログトラブル時表示内容
server1,ラックA-1
192.168.1.10,ラックA-1下
100.1.1.1,ラックC-2
-------------------
REM -chkping.bat-----------------------------------------------------------
REM 2007/08
REM list.txt のサーバへpingをうち、正否をログに出力する
REM list.txt フォーマット
REM サーバ名,エラー時の記載内容(ラック位置など)
REM #以降はコメントとして無視
REM chek.txt(ログファイル)フォーマット
REM 日,時間,ping先,リターンコード*1,正常/エラー*2
REM *1.リターンコード:0なら正常
REM *2.エラー時はlist.txtのエラー時の記載内容を記載
REM サンプル
REM 2007/08/21,18:01,192.168.1.10,0,正常
REM 2007/08/21,18:01,100.1.1.1,1,エラー ラックC-2
REM
REM Windows 2003 で動作確認
REM ------------------------------------------------------------
setlocal
set logf=check.txt
FOR /F "eol=# tokens=1,2,3* delims=, " %%I in (list.txt) do (
call :SUB %%I %%J
)
endlocal
exit /B
:SUB
REM 日時と時間を ldate , ltime 変数に取得
for /F "usebackq tokens=1,2,3,* delims=/: " %%I in (`date/T`) do set ldate=%%I/%%J/%%K
for /F "usebackq tokens=1,2,3,* delims=/: " %%I in (`time/T`) do set ltime=%%I:%%J
ping -n 2 %1
if %errorlevel% == 0 (
echo %LDATE%,%LTIME%,%1,%errorlevel%,正常 >> %logf%
) ELSE (
echo %LDATE%,%LTIME%,%1,%errorlevel%,エラー %2>> %logf%
)
exit /B
schtasks で毎日18時にsystem権限でスクリプトを実行するとき
C:\scripts> schtasks /create /tn "DelLog" /tr "cscript.exe C:\scripts\DelLog.vbs test" /sc daily /st 18:00 /ru system
情報: スケジュール タスク "DelLog" はユーザー名 ("NT AUTHORITY\SYSTEM") で作成されます。
成功: スケジュール タスク "DelLog" は正しく作成されました。
MT4.0で デザイン▽ 設定から、「ウィジェット」(Widget)と「スタイル」の両方を利用する方法、覚え書き。
MT3.3xからのバージョンアップのため?かもしれませんが、Widget中のclass名などがスタイルで利用のそれと異なっていました。Widget中ではmodule-xxが スタイル中ではwidget-xxになってます。
MT4.0新機能の検索置換機能を利用して、一括で修正できました。
変換:下記を検索・置換。種類が widget のもののみを選択。
class="module-header" → class="widget-header"
module-content → widget-content
module-list → widget-list
module" → widget"
#よく考えたら、下記だけでいけそうです。
module- → widget-
module" → widget"
置換後は再構築が必要です。
#あと、widget テンプレートの class="widget-header" のh2 を h3に変更。。。は全部手で。
後はデザインを本来のように設定し、widgetを利用するようにテンプレートを修正します。
名前は Widget-beta,Widget-gammaとしておきます。
#ここでは3カラムを選択
モジュールテンプレート 中の「サイドバー(3カラム)」を修正。
要はbeta-inner,gamma-innerそれぞれに上で作ったWidget-beta,Widget-gamma を指定します。
なお、デフォルトはアーカイブや検索結果ごとに画面を変えるなど、かなり凝ったことをやっていますので、ある程度残すなどはお好み。
最後に再構築すればできあがり。
なお、3.xでは「Main page」テンプレート に直接beta,gammaをつっこんでいたと思いますが、MT4.では「サイドバー(3カラム)」テンプレート内にbeta/gammaが指定されています。
alphaは「ヘッダー」テンプレート内です。(/divで閉じてませんが)
で、「メインページ」テンプレートから「ブログ記事の概要」や「ヘッダー」「フッター」 などテンプレートを呼び、「フッター」テンプレートから「サイドバー(3カラム)」テンプレート を呼んでます。
なお、一時期、IEで表示がずれていましたが原因判りました。興味ある方用に、下記続き に記載しておきます。
テンプレートの構成がかなり3.3xからかなり変わっているが、バージョンアップすると
テンプレート自体は古いまま引き継がれます。
で、「テンプレートの初期化」(Template Backup and Refresh)で解決しようとすると
カスタムテンプレートと思われるため、'メインページ'をスキップします。とか出てしまい、初期化ができない。
仕方ないので、新規ブログを作成して、テンプレートを全部内容表示して手動でコピーして解決した。。
Widget Manager とスタイルを併用すると div のid名が違うために表示がくずれるのは、
元々なのだろうか、Ver.UPのためだろうか。。
ASR(自動システム回復)で、バックアップファイルをファイル共有サーバから
利用する方法を記載しました。
これの際はDHCPを想定していましたが、固定IPを設定する事も可能です。
キホンはnetsh コマンドで対応するのですが、日本語入力ができないのを「ローカル エリア接続」とどう入力するか、が問題となります。
1つの方法の手順を記載します。
○ASR復元
1)通常の手順で復元を開始します。(通常の手順は別エントリ中の[基本的なASRの実行手順などは?]手順を参照)
2)「Shift + F10」 でコマンドプロンプトを表示します。
参考:GUI モードのセットアップ実行中にコマンド プロンプトを使用する方法
http://support.microsoft.com/kb/242380/
3)ネットワーク名を表示
下記コマンドを実行します。
netsh interface show interface
DLL読み込みでエラーは無視します。
![]()
4)ネットワーク名をコピー1
コマンドプロンプト 左上 を右クリック - 「編集」-「範囲指定」をクリック。
![]()
5)ネットワーク名をコピー2
ネットワーク名を選択して、Enterキーを押します。
通常は「ローカル エリア接続」の文字列になります。
![]()
6)IP指定のコマンドを入力
下記コマンドを記載します。まだ(Enterで)実行はしません。
コマンド内容の詳細は netsh ヘルプ参照。
netsh interface ip set adderss "" static [IPアドレス] [サブネットマスク] [ゲートウェイIPアドレス] 1
例:
netsh interface ip set adderss "" static 192.168.1.234 255.255.255.0 192.168.1.1 1
7)ネットワーク名をペースト
""の間にカーソルを矢印キーで移動し、右クリックでネットワーク名を貼り付け(ペースト)ます。
例:
netsh interface ip set adderss "ローカル エリア接続" static 192.168.1.234 255.255.255.0 192.168.1.1 1
![]()
![]()
8)Enterキーで設定
Enterキーで実行します。DLL読み込みでエラーは無視します。
![]()
9)設定結果の確認
ipconfig /all で設定を確認します。
![]()
これで完了です。
あとは「ASR(自動システム回復) でファイルサーバを利用する方法 訂正版」などご参照ください。
前提条件
○OS標準のドライバでNICが動作すること
必要ならばASR指定前にF6でドライバを読み込ませるか、ASRファイル中で指定してインストールも可能と思いますが、テストしていません。
参考:自動システム回復の実行時にファイルを追加インストールする方法
○HUB側のスピード設定がAutoのこと
NICスピード設定がドライバ上の設定のため、netshコマンドではNICスピードの固定はできません。
HUB側で固定で設定してあった場合などは通信スピードが遅くなると思われます。
#通信自体は可能と思われますので、時間をかけてよければ、そのまま実行する方法もあります。
参考情報
○GUI モードのセットアップ実行中にコマンド プロンプトを使用する方法
*Shift+F10
http://support.microsoft.com/kb/242380/
○Win2003 の ASR(自動システム回復) の詳細を見る
○自動システム回復の実行時にファイルを追加インストールする方法


