2011/07/27

DateTime.ToString() 포맷 출력 예제

DateTime.ToString Method (String)
http://msdn.microsoft.com/en-us/library/zdtaw1bw.aspx

매번 찾아 볼려니 귀찮아서.... 요약만. ^^;;;

d: 6/15/2008
D: Sunday, June 15, 2008
f: Sunday, June 15, 2008 9:15 PM
F: Sunday, June 15, 2008 9:15:07 PM
g: 6/15/2008 9:15 PM
G: 6/15/2008 9:15:07 PM
m: June 15
o: 2008-06-15T21:15:07.0000000
R: Sun, 15 Jun 2008 21:15:07 GMT
s: 2008-06-15T21:15:07
t: 9:15 PM
T: 9:15:07 PM
u: 2008-06-15 21:15:07Z
U: Monday, June 16, 2008 4:15:07 AM
y: June, 2008

'h:mm:ss.ff t': 9:15:07.00 P
'd MMM yyyy': 15 Jun 2008
'HH:mm:ss.f': 21:15:07.0
'dd MMM HH:mm:ss': 15 Jun 21:15:07
'\Mon\t\h\: M': Month: 6
'HH:mm:ss.ffffzzz': 21:15:07.0000-07:00


2011/07/26

XPathDocument 에서 Namespace 존재하는 XML Parsing

윈도우 이벤트로그 XML 데이터를 활용해 보려고 하다가,. 기존에는 네임 스페이스 없는 XML 데이터만 파싱(네임스페이스 있는 XML 을 만들기는 하면서...ㅎㅎ)하는데 익숙해서,. 그대로 하니 쿼리가 안되서  한참 헤맴...;;

XPathDocument doc = new XPathDocument(new XmlTextReader("evtx.xml"));         
XPathNavigator nav = doc.CreateNavigator();

XmlNamespaceManager namespaceMgr = new XmlNamespaceManager(nav.NameTable);
namespaceMgr.AddNamespace("ns", "http://schemas.microsoft.com/win/2004/08/events/event");

XPathNodeIterator ni = nav.Select("//ns:Data", namespaceMgr);           
while (ni.MoveNext())
{
    ni.Current.MoveToFirstAttribute();
    string _Name = ni.Current.Value;
    ni.Current.MoveToParent();
    Console.WriteLine(_Name + ": " + ni.Current.ToString());
}

XmlNamespaceManager Class
http://msdn.microsoft.com/en-us/library/system.xml.xmlnamespacemanager.aspx


2011/07/23

wevtutil 를 이용한 이벤트로그 필터링

wevtutil 는 명령행에서 이벤트 로그를 필터링해서 가져올수 있는 유틸리티 입니다. 이벤트 로그를 가져오기 위해서는 다른 툴도 있기는 하지만,. wevtutil 는 윈도우 내장이며,. 특히 기본 이벤트 로그외 xpath 형식과 xml 데이터 형으로 가져올수 있는 강점이 있습니다.

wevtutil 에 대한 매뉴얼은 다음 페이지를 참고하시면 되겠습니다.
http://technet.microsoft.com/en-us/library/cc732848(WS.10).aspx

다음 예제는,. 윈도우 방화벽에서 룰 설정 관련 이벤트 로그만 가져오며, 특정 기간만 가져옵니다. 그리고 결과값은 XML 입니다.

wevtutil qe "Microsoft-Windows-Windows Firewall With Advanced Security/Firewall" /rd:true /q:"*[System[(EventID=2004 or EventID=2005 or EventID=2006) and TimeCreated[@SystemTime>='2011-07-01T06:10:08.000Z' and @SystemTime<='2011-07-22T06:30:00.999999999Z']]]" /f:XML

결과값이 XML 로 가져온다는 것은,. XML 포맷 특성상 데이터 호환성이 매우 높아서 여러가지 부분에서 활용이 가능합니다. 이와 같은 정형화된 포맷 데이터는 윈도우 운영체제 관리에 있어서 매우 중요한 요소입니다.



특히, XML 데이터의 경우, Text 형에서 반환하지 않는 매우 상세한 결과값을 줍니다. 이러한 XML 데이터에서 필요한 부분만 XML 파싱 처리를 하면 좋습니다.

만약,, 닷넷 프레임워크 4버젼이 설치되어 있는 시스템이라면,. EventLog 클래스를 통해서 여러가지 evtx 의 이벤트 로그를 가져오거나 EntryWrittenEventHandler 로 바로 받아 볼수 있습니다.


22-isnull-windows-adv-firewall-wevtutil.jpg

2011/07/20

XMPP(jabber-net) 을 이용한 Google Talk 에 메시지 보내기

Google Talk 를 통해서,,
모니터링 메시지를 받아볼까 해서 함 해봤는데 Push 는 잘 되는데 Google Talk 앱이 기기에서 자주 Offline 되서 Push 수신이 안되네요...^^ 
그래서 딴 방법으로 하기로 하고 그냥 패쓰!!

http://code.google.com/p/jabber-net/


    using jabber.client;
    using System.Threading;
    using jabber.protocol.iq;
    using jabber;
    using jabber.protocol;

       jabber.client.JabberClient jc ;     
       static ManualResetEvent done = new ManualResetEvent(false);

        public void run()
        {
            jc = new    jabber.client.JabberClient();
            jc.User = "isnull-test";
            jc.Server = "gmail.com";
            jc.Password = "gg0wcgd435";

            jc.AutoPresence = false;
            jc.AutoRoster = false;
            jc.AutoReconnect = -1;
            //jc.AutoLogin = true;

            jc.OnAuthenticate += new bedrock.ObjectHandler(j_OnAuthenticate);
            jc.OnError += new bedrock.ExceptionHandler(j_OnError);
            jc.OnDisconnect += new bedrock.ObjectHandler(jc_OnDisconnect);

            jc.Connect();
            done.WaitOne();
            jc.Close();
        }

         void j_OnError(object sender, Exception ex)
        {
            Console.WriteLine("Error: " + ex.ToString());
            done.Set();
        }

         void j_OnAuthenticate(object sender)
        {
            jc.Message("insideapple@gmail.com", "테스트 " + DateTime.Now.ToString());
            Console.WriteLine(DateTime.Now.ToString());
           
            Finished sending.  Shut down.
            done.Set();
        }

        private void jc_OnDisconnect(object sender)
        {
            Console.WriteLine("Disconnect!!!");
        }

앱을, IM+ 같은 백그라운드 서비스 형태로 작동하는 앱으로 바꿈 되는데,. 이것도 무료 버젼에서는 Push 시간 제한이 있어서 즉시 수신이 안되는 경우도 종종 있고...

2011/07/07

Backup / ID: 518

'‎2011‎-‎07‎-‎05T19:00:18.021157400Z'에 시작된 백업 작업에 오류가 발생했습니다. 다른 백업 또는 복구 작업이 진행 중입니다. 충돌하는 작업을 중지하고 백업 작업을 다시 실행하십시오.

2011/07/06

VSS / ID: 12305

볼륨 섀도 복사본 서비스 오류: 볼륨/디스크가 연결되어 있지 않거나 없습니다.
오류 컨텍스트: DeviceIoControl(\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy16 - 000001BC,0x00530194,00000000,0,0003A688,4096,[0]).

2011/07/01

WMI 를 통한 성능 카운터 Raw 데이터 수집시 잘못된 값 반환

다음 내용은, Microsoft 에 리포트 한 내용이며,. Microsoft 에서 확인후 어떤 결과가 나오면 댓글로 알려드리겠습니다. 혹시 운영하시는 장비들중에도 하기와 같은 현상이 있으면 정보 공유 바랍니다.^^

----------------------

대상장비1: Windows Server 2008 x32 (Vista base). 네트워크 이더넷 1Gbps.
대장장비2: Windows Server 2008 R2 (x64, Win7 base). 네트워크 이더넷 1Gbps.
 
WMI의 Win32_PerfRawData_Tcpip_NetworkInterface 개체를 통해서 BytesReceivedPersec,BytesSentPersec 두가지 값을 수집합니다. 위 두가지 값의 데이터 형은 ulong 입니다. 최대값은 18446744073709551615 입니다.
 
현재 운영되는 약 500 여대의 서버 장비에서는 문제가 없으나,
위 2대의 장비에서 다음과 같은 오류가 확인 되었습니다.
 
먼저 데이터 로그 기록입니다.
 
2011-07-01 오전 9:11:20:892 Raw_ReceivedBytes: 2652611056
2011-07-01 오전 9:12:20:930 Raw_ReceivedBytes: 2655752858 (18446744073709551615  근처까지 raw 데이터가 나와야 함)
 
2011-07-01 오전 9:13:20:969 Raw_ReceivedBytes: 79753 
--> 이 부분 입니다.

네트워크가 1Gpbs 이기 때문에 매 1분마다 측정값이므로 1G를 모두 사용한다고 해도 ulong 최대값을 롤오버가 될수가 없습니다. 그런데,. 위 로그를 보면,. raw 값이 2655752858  에서 갑자기 -->  79753 으로 측정됩니다. (아마도 초기화 되는 것으로 추정됨)
 
BytesSentPersec 값에서도 동일한 현상이 발생합니다.
 
2011-07-01 오전 9:14:21:9 Raw_ReceivedBytes: 2626419
2011-07-01 오전 9:15:21:48 Raw_ReceivedBytes: 5127690

DNS / ID: 4007

DNS 서버가 ( ) 응용 프로그램 디렉터리 파티션의 Active Directory에서 ( ) 영역을 열지 못했습니다. 이 DNS 서버가 디렉터리에서 이 영역에 대한 정보를 얻고 사용하도록 구성되어 있으며 이 정보 없이는 영역을 로드할 수 없습니다. Active Directory가 제대로 작동하는지 확인하고 영역을 다시 로드하십시오. 이벤트 데이터는 오류 코드입니다.

가장 많이 본 글