2013年10月30日水曜日

作業10

01 9:00-19:40 2:00 アーカイブサーバ構築
02 9:00-17:40
03 9:00-19:40 2:00 会計サーバ構築
04 9:00-12:00    午後半休
07 9:00-19:00 1:20 アーカイブサーバ構築(ドキュメント)
08 9:00-18:40 1:00 ICAライセンスサポートサーバDISK枯渇対応
09 9:00-18:40 1:00 NETCA文字化け対応方法調査
10 9:00-18:40 1:00 Acronis導入ドキュメント
11 9:00-17:40    Acronisエージェント導入
15 9:00-18:40 1:00 ECサイト構築
16 9:00-18:40 1:00 ECサイト構築
17 6:00-20:40 6:00 Acronisエージェント導入
18 9:00-20:40 3:00 ECサイト構築
21 9:00-18:55 1:15 ECサイトのAcronis実施検証
22 9:00-19:40 2:00 Acronis導入(電話帳と複合機)
23 9:00-18:40 1:00 Acronisユーザガイドフォロー
24 9:00-20:00 2:20 DNSCmd一括バッチの作成
25 9:00-21:00 3:20 サーバプロテクト運用レビュ準備とレビュー後フォロー
28 9:00-20:00 2:20 ECサイト構築
29 9:00-22:00 4:20 シンクライアントサーバ構築
30 9:00-17:40    シンクライアントサーバ構築
31 9:00-17:40    Acronis導入ドキュメント

2013年10月25日金曜日

VBS2


'##############################################################
'# DSN レコードの更新処理
'# 機能:
'# 入力ファイルの情報からDSNレコードへ追加
'# 入力ファイルの情報からDSNレコードから削除
'# 入力パラメータのフォーマットチェック
'# 
'# 実行方法:コマンドコンソールから実施する
'# cscript //nologo CS_DNSUpdate.vbs > DNSUpdate.log &
'# cscript //nologo CS_DNSUpdate.vbs CHK > DNSUpdate.log &
'# 
'#
'# 実行時の注意
'#         1.オプション:CHKを付けてエラーチェックのみを行う。
'#         2.エラーがある場合はエラーを修正し、CHKオプションでログにエラーが無くなるまで実行する
'#         3.エラーがない状態で、CHKオプションを外して本実行する
'# 
'# 入力パラメータファイル:
'#         当スクリプトと同場所  CS_DNSUpdate.ini
'#         フォーマット:
'#         項目左詰,半角スペースのセパレータ
'#         項目:
'#         システム名、DNSアドレス、ドメイン名、ホスト名、IPアドレス、災対IPアドレス
'#         
'#         システムの単位で登録する
'#         行をコメントにする場合は、先頭#文字
'#         全ての項目は、入力必須、ブランク、空白は不可でこの事象に該当する場合部分エラーとなる
'#         CHKオプション付きで実行してフォーマットをチェックしてから、CHKオプションを外して実行することを推奨します。
'#
'# ログファイル:
'#         当スクリプトと同場所  DNSUpdate.log
'#
'# UPDATE 2013/10/24 
'#
'##############################################################
'Option Explicit

' グローバル定義 
Dim sCheck    'パラメータ1 1:チェック
Dim iStepNo : iStepNo = 1  'ステップ番号
Dim msg : msg = ""    'メッセージ
Dim sComputer
Dim URL

'****************************************************************
' 関数 
'****************************************************************
'' メッセージレベル
Const MSGLEVEL_I = " I "  ' INFOMATION 
Const MSGLEVEL_W = " W "  ' WARNING 
Const MSGLEVEL_E = " E "  ' ERROR_ 
Const MSGLEVEL_S = " S "  ' SEVERE_ERROR 

'' コマンド@@
Const DNSCMD = "xdnscmd"  ' DNS CMD COMMAND 

'' OPTION
Const CHK = "CHK"    ' RUN OPTION  
Const ExE = "EXE"    ' RUN OPTION  

Const INI_FILE = "CS_DNSUpdate.ini"    ' Fie  
Const LOG_FILE = "CS_DNSUpdate.log"    ' Fie  

'****************************************************************
sCheck = Main_Init()
Call Main(sCheck)
WScript.Quit (0)

'**************************************************************
' メイン処理
'**************************************************************
Sub Main(flg)

Dim infile
Dim outfile

infile = Left(WScript.ScriptFullName,InStrRev(WScript.ScriptFullName,"\")) & INI_FILE
outfile = Left(WScript.ScriptFullName,InStrRev(WScript.ScriptFullName,"\")) & LOG_FILE

WScript.Echo now & "** DNS UPDATE START ** " 

Dim WshShell 
Set WshShell = WScript.CreateObject("WScript.Shell")

WScript.Echo now & "** DNS UPDATE Main ** flg=" & flg

DnsRecordAddMain infile,flg
DnsRecordDelMain infile,flg

WScript.Echo now & "** DNS UPDATE STOP  ** "

End Sub

'************************************************************
' 関数: DnsRecordAddMain 
' 用途: DSNレコード追加を行う 
' 入力: パラメータ、処理フラグ 
' 戻値:
'************************************************************
Function DnsRecordAddMain(infile,flg)

Dim objFSO       ' ファイルシステムオブジェクト
Dim objTextStream  ' テキストストリームオブジェクト
Dim strText   ' テキスト内容
Dim sSysName
Dim sSysNameOld
Dim sRc
Dim iCnt
Dim iCntErr

iCnt = 0
iCntErr = 0

sSysName = ""
sSysNameOld = ""

On Error Resume Next

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

Set objTextStream = objFSO.OpenTextFile(infile, 1)

Do Until objTextStream.AtEndOfLine = True

strText = objTextStream.ReadLine

'コメント行の確認
IF Left(strText, 1) <> "#" THEN

'システム名の表示
aryStrings = Split(strText, " ")
sSysName  = aryStrings(0)
IF sSysName <> sSysNameOld THEN

WScript.Echo "##### " & sSysName & "の災対レコードを追加します。#####" 
END IF
sSysNameOld = sSysName

cmd = BildDnsAddCmd(strText)

IF cmd <> 1 THEN
'1行目(生成コマンドの表示)
WScript.Echo now &  " " & cmd
IF flg <> CHK THEN 
'2行目(コマンドの実行)
sRc= WshShell.run (cmd,1,true)
'3行目(実行結果の表示)
WScript.Echo now & " ** " & EXE & sRc  & " ** "
END IF
Else
iCntErr = iCntErr + 1
END IF

iCnt = iCnt + 1

END IF

Loop

WScript.Echo now & " " &  "** DnsAdd ** Mode=" & flg &  " iCnt=" &  iCnt &  " iCnErr=" &  iCntErr

objTextStream.Close

Set objTextStream = Nothing
Set objFSO = Nothing

End Function

'************************************************************
' 関数: dnsへのレコード追加コマンドを生成する 
' 説明: 入力レコードからコマンドを組み立てて返す 
' 入力: 入力レコード(スペース区切り) 
' 戻値: コマンド 
'************************************************************
Function BildDnsAddCmd(strText)

Dim sBildCmd
Dim sSysName
Dim sDnsIp
Dim sDomain
Dim sHostname
Dim sIp
Dim sIpEmg

sBildCmd =""

aryStrings = Split(strText, " ")

sSysName  = aryStrings(0)
sDnsIp    = aryStrings(1)
sDomain   = aryStrings(2)
sHostname = aryStrings(3)
sIp       = aryStrings(4)
sIpEmg    = aryStrings(5)

'入力チェック --------------------------------------------------
errflg = 0
if sSysName = "" then
WScript.Echo now & " " &  " ** INPUT FILE SYSNAME SPACE ERROR **"
errflg = 1
end if
if sDnsIp = "" then
WScript.Echo now & " " &  " ** INPUT FILE DNSIP SPACE ERROR **"
errflg = 1
end if
if sDomain = "" then
WScript.Echo now & " " &  " ** INPUT FILE  DOMAIN SPACE ERROR **"
errflg = 1
end if
if sHostname = "" then
WScript.Echo now & " " &  " ** INPUT FILE  HOSTNAME SPACE ERROR **"
errflg = 1
end if
if sIp = "" then
WScript.Echo now & " " &  " ** INPUT FILE IP SPACE ERROR **"
errflg = 1
end if
if sIpEmg = "" then
WScript.Echo now & " " &  " ** INPUT FILE IPEMG SPACE ERROR **"
errflg = 1
end if
if errflg = 1 then 
BildDnsDelCmd = errflg
return
end if
'入力チェック --------------------------------------------------

'コマンドの組み立て
sBildCmd = DNSCMD & " " & sDnsIp & " /recordadd " & sDomain & " " & sHostname & " A " & sIpEmg

'WScript.Echo now & " " & sBildCmd

BildDnsAddCmd = sBildCmd

End Function

'************************************************************
' 関数: DnsRecorddelMain 
' 用途: DSNレコード削除を行う 
' 入力: パラメータ、処理フラグ 
' 戻値:
'************************************************************
Function DnsRecordDelMain(infile,flg)

Dim objFSO    ' ファイルシステムオブジェクト
Dim objTextStream  ' テキストストリームオブジェクト
Dim strText   ' テキスト内容
Dim sSysname
Dim sSysNameOld
Dim sRc
Dim iCnt
Dim iCntErr

iCnt = 0
iCntErr = 0

sSysName = ""
sSysNameOld = ""

On Error Resume Next

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

Set objTextStream = objFSO.OpenTextFile(infile, 1)

Do Until objTextStream.AtEndOfLine = True

strText = objTextStream.ReadLine

'コメント行(先頭が#)の確認
IF Left(strText, 1) <> "#" THEN  

'システム名の表示
aryStrings = Split(strText, " ")
sSysName  = aryStrings(0)
IF sSysName <> sSysNameOld THEN

WScript.Echo "##### " & sSysName & "の災対レコードを削除します。#####"
END IF
sSysNameOld = sSysName

cmd = BildDnsDelCmd(strText)

IF cmd <> 1 THEN 
'1行目(生成コマンドの表示)
WScript.Echo now & " " & cmd
IF flg <> CHK THEN 
'2行目(コマンドの実行)
sRc = WshShell.run (cmd,1,true)
'3行目(実行結果の表示)
WScript.Echo now & " ** " & EXE & sRc  & " ** "
END IF
Else
iCntErr = iCntErr + 1
END IF

iCnt = iCnt + 1
END IF

Loop

WScript.Echo now & " " &  "** DnsDel ** Mode=" & flg &  " iCnt=" &  iCnt &  " iCnErr=" &  iCntErr

objTextStream.Close

Set objTextStream = Nothing
Set objFSO = Nothing

End Function


'************************************************************
' 関数: dnsへのレコード削除コマンドを生成する 
' 説明: 入力レコードからコマンドを組み立てて返す 
' 入力: 入力レコード(スペース区切り) 
' 戻値: コマンド 
'************************************************************
Function BildDnsDelCmd(strText)

Dim sBildCmd
Dim sSysName
Dim sDnsIp
Dim sDomain
Dim sHostname
Dim sIp
Dim sIpEmg

sBildCmd =""

aryStrings = Split(strText, " ")

sSysName  = aryStrings(0)
sDnsIp    = aryStrings(1)
sDomain   = aryStrings(2)
sHostname = aryStrings(3)
sIp       = aryStrings(4)
sIpEmg    = aryStrings(5)


'入力チェック --------------------------------------------------
errflg = 0
if sSysName = "" then
WScript.Echo now & " " &  " ** INPUT FILE SYSNAME SPACE ERROR **"
errflg = 1
end if
if sDnsIp = "" then
WScript.Echo now & " " &  " ** INPUT FILE DNSIP SPACE ERROR **"
errflg = 1
end if
if sDomain = "" then
WScript.Echo now & " " &  " ** INPUT FILE  DOMAIN SPACE ERROR **"
errflg = 1
end if
if sHostname = "" then
WScript.Echo now & " " &  " ** INPUT FILE  HOSTNAME SPACE ERROR **"
errflg = 1
end if
if sIp = "" then
WScript.Echo now & " " &  " ** INPUT FILE IP SPACE ERROR **"
errflg = 1
end if
if sIpEmg = "" then
WScript.Echo now & " " &  " ** INPUT FILE IPEMG SPACE ERROR **"
errflg = 1
end if
if errflg = 1 then 
BildDnsDelCmd = errflg
'return
end if
'入力チェック --------------------------------------------------

'コマンドの組み立て
sBildCmd = DNSCMD & " " & sDnsIp & " /recorddelete " & sDomain & " " & sHostname & " A " & sIp

'WScript.Echo now & " " & sBildCmd

BildDnsDelCmd = sBildCmd

End Function


'**************************************************************
' 1.1 初期処理 
'**************************************************************
Function Main_Init()

' VBS起動するWSHコマンドがcScriptでない場合は
' エラーコード99で終了する
IF Not(IsCscript()) THEN
WScript.Quit (99)
END IF

msg="** Note:CScript ONLY RUN **"
sComputer = SetLogHeader(msg)

Main_Init = GetParam()


End Function

'-----------------------------------------------
' 1.1.1 パラメータ取得処理 
'-----------------------------------------------
Function GetParam()

Dim i
Dim objParm

sCheck = EXE   ' モード

Set objParm=WScript.Arguments
For i=1 To objParm.Count
WScript.echo now & MSGLEVEL_I & "** (" & i & ") " & objParm.Item(i - 1)

IF i = 1 THEN
sCheck = objParm.Item(i - 1)
END IF
Next

GetParam = sCheck

End Function

'****************************************************************
' 関数: IsCscript 
' 用途: 自VBSを起動したWSH コマンドがcScriptを返信 
' 入力: 無し
' 戻値: cScriptの時true wScriptの時false 
'****************************************************************
Function IsCscript()

' WSH起動コマンド
Const WHS_COMMAND_WSCRIPT = "wscript.exe"
Const WHS_COMMAND_CSCRIPT = "cscript.exe"

IsCscript = true
IF LCase( Right(WScript.FullName, len(WHS_COMMAND_WSCRIPT)) ) = WHS_COMMAND_WSCRIPT THEN
IsCscript = false
END IF

End Function

'****************************************************************
' 関数: SetLogHeader 
' 用途: ログヘッダーページをフォーマット 
' 入力: ヘッダーのコメントメッセージ 
' 戻値: コンピュータ名前 
'****************************************************************
Function SetLogHeader(msg)

Dim objNetWork    ' ネットワークオブジェクト 
Dim objParm    ' コマンドラインパラメータ 
Dim i      ' コマンドライン引数の個数 

Dim chr
iStepNo = 0

WScript.Echo now & " ***********************************************************"

WScript.Echo now & EditTitleLine(" ** Script : " & Wscript.ScriptName)
WScript.Echo now & EditTitleLine(" ** " & Wscript.ScriptFullName)

WScript.Echo now & " ** ----------------------------------------------------- **"
WScript.Echo now & EditTitleLine(" ** WSH : " & Wscript.Name)
WScript.Echo now & EditTitleLine(" ** " & Wscript.FullName)
WScript.Echo now & EditTitleLine(" ** " & Wscript.Path)
WScript.Echo now & " ** ----------------------------------------------------- **"

Set objParm = WScript.Arguments
WScript.Echo now & EditTitleLine(" ** Command param count " & objParm.Count)

For i=1 To objParm.Count
WScript.echo now & EditTitleLine(" ** (" & i & ") " & objParm.Item(i - 1))
Next

WScript.Echo now & " ** ----------------------------------------------------- **"

' ネットワークオブジェクトの作成
Set objNetWork = WScript.CreateObject("WScript.Network")
' ユーザ名
WScript.echo now & EditTitleLine(" ** UserName     : " & objNetWork.UserName)
' ドメイン名
WScript.echo now & EditTitleLine(" ** UserDomain   : " & objNetWork.UserDomain)
' コンピュータ名
WScript.echo now & EditTitleLine(" ** ComputerName : " & GetComputer())

WScript.Echo now & " ***********************************************************"
WScript.Echo now & EditTitleLine(" ** " & msg)
WScript.Echo now & " ***********************************************************" 


SetLogHeader = GetComputer()

Set objNetWork = Nothing 

End Function

'****************************************************************
' 関数: EditTitleLine 
' 用途: 文字列編集、所定のカラム位置に**の文字を挿入する 
' 入力: 変種前文字列 
' 戻値: 編集後文字列 
'****************************************************************
Function EditTitleLine(chr)

Dim sEditTitleLine
Dim iMAXCOLS
iMAXCOLS = 60

sEditTitleLine = left(chr,len(chr)) & Space(iMAXCOLS-len(" **")-len(chr)) & " **"
EditTitleLine = sEditTitleLine

End Function

'****************************************************************
' 関数: GetComputer 
' 用途: コンピュータ名を取得する 
' 入力: 無し 
' 戻値: コンピュータ名 
'****************************************************************
Function GetComputer()

Dim objNetWork   ' ネットワークオブジェクト

' ネットワークオブジェクトの作成
Set objNetWork = WScript.CreateObject("WScript.Network")

' コンピュータ名
GetComputer = objNetWork.ComputerName

Set objNetWork = Nothing

End Function


2013年10月7日月曜日