Powershell Error 내용 확인 방법

2016.03.04 10:52 | Posted by 로멘틱가이

Set-ADAccountPassword 사용 시 Error 내용을 받고 싶은 경우 다음과 같이 하면 됩니다.

 

- Set-ADAccountPAssword -Identity [User명] -NewPassword [Password명] -Reset -ErrorVariable strError

 

여기서 strError로 Error 변수를 저장하게 됩니다.

 

Write-Host $strError를 해보면 오류가 발생하는 것을 확인할 수 있습니다.

ErrorVariable은 해당 함수에만 적용이되는 것이 아니라 디폴트 속성이기 때문에 참고하시기 바랍니다.

도메인 분석 사이트

2016.03.03 13:35 | Posted by 로멘틱가이
https://www.ssllabs.com/ssltest/analyze.html

 

도메인 분석 사이트

Powershell Remote 변수 실행

2015.06.08 19:17 | Posted by 로멘틱가이

오늘은 Powershell Remote 실행 관련하여 매개변수를 받는 경우 생기는 이슈에 대해 이야기 해보겠습니다.

 

예를 들어 A서버에서 B서버로 Remote PowerShell 명령어를 사용하여 붙는 경우에는 일반적으로 Invoke-Command를 사용합니다.

Invoke-Command는 ScriptBlock 명령어를 지정한 서버에 실행하게 됩니다.

ScriptBlock의 경우 일반적으로 다음 양식을 따릅니다.

{ "명령어" }

 

그런데 원격지 서버로 명령어를 수행할때 변수가 사용되는 경우 이슈가 생깁니다.

Invoke-Command 명령어의 경우 Remote 세션을 새로 만들기 때문에 기존에 가지고 있는 Local 세션과 다른 세션이 만들어지므로 변수 값을 인식을 못합니다.

 

예를 들어

$sb=123

 

Invoke-Command { Get-ChildItem $sb } -ComputerName B

 

위와 같은 명령어가 있는 경우

ComputerName B와 연결된 세션에서는 $sb 변수를 인지하지 못하게 됩니다.

 

그래서 로컬 변수를 원격의 변수로 넣어주기 위해서는 다음과 같은 작업을 진행합니다.

 

$d = "C:\Test"

$sb = { Get-ChildItem "$using:d" }

 

Invoke-Command -ScriptBlock $sb -ComputerName B

 

여기서 using이 로컬 변수를 원격의 새로 생긴 세션에 변수를 가져오는 역할을 합니다.

 

해당 서버에 호스트네임으로 접속하는 경우에 이슈가 없으나 IP로 접근하는경우

winrm s winrm/config/client '@{TrustedHosts="서버 아이피"}'

를 입력해야합니다.

모든 원격 서버를 승인하기 위해서는 서버 아이피 대신 Remote Computer를 입력합니다.

 

Ubuntu Python Version Upgrade

2015.05.02 04:30 | Posted by 로멘틱가이

먼저 아래 Package에 대한 의존성을 설치합니다.

sudo apt-get install build-essential
sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

Python 2.7.5 를 Download 받습니다.

cd ~/Downloads/
wget http://python.org/ftp/python/2.7.9/Python-2.7.9.tgz

tgz 파일의 압축을 풉니다.

tar -xvf Python-2.7.5.tgz
cd Python-2.7.5

다음 명령어를 사용하여 Python을 설치합니다.

./configure
make
sudo make install
Default Python Version을 변경하기 위해 다음 작업을 진행합니다.

위와 같이 Python 2.7.9 Version 설치 후 /usr/local/bin 폴더를 보면 python 2.7.9 Version이 설치되어 있는 것을 확인할 수 있습니다.

Default Version은 /usr/bin 밑에 설치가 되어 있으며 python 실행 파일은 같은 폴더의 python2.7과 링크로 연결되어 있음을 확인할 수 있습니다.

그럼 기존 python 파일을 백업 후 새로운 버전으로 link 파일을 새로 생성합니다.

> mv /usr/bin/python /usr/bin/python_bak

> cp /usr/local/bin/python2.7 /usr/bin/python2.7.9

> ln -s /usr/bin/python2.7.9 /usr/bin/python

 

위의 작업을 완료한 후 python Version을 확인합니다.

> python -V

 

해당 명령어 수행후 2.7.9로 버전이 변경되어 있음을 확인할 수 있습니다.

 

단, Django와 같이 외부 모듈을 설치할 경우 Default Configure로 설치하는 경우 manage.py를 기동하는 경우

zlib, sqlite3과 같은 모듈을 import할 수 없다고 나옵니다.

 

해당 오류가 발생하는 경우 다음과 같이 설치 옵션을 바꾸면 됩니다.

> ./configure --with-zlib --with-sqlite3

 

해당 오류가 발생하는 이유는 python 프로그램이 설치 되면서 해당 프로그램에 zlib와 sqlite3 module이 포함되지 않았기 때문입니다.

해당 명령어로 설치하는 경우 설치 시 python에 두 개의 모듈이 추가되어 이슈 없이 설치되어 집니다.

 

* 만일 두 개의 모듈이 설치되지 않은 경우 다음 명령어로 수행한다.

> apt-get install zlibc zlib1g zlib1g-dev

> sudo apt-get install sqlite3 libsqlite3-dev

MOF File

2014.12.15 10:30 | Posted by 로멘틱가이

MOF 파일은 WMI를 사용하는 경우 WMI Data(namespace, classes, instances, providers의 정의)를 포함하고 있는 File

 

(참고사이트 : http://technet.microsoft.com/en-us/library/cc180827.aspx)

TAG MoF, WMI

Remote Registry Get

2014.01.23 20:41 | Posted by 로멘틱가이

Vbscript를 사용하여 원격 Registry 값을 가지고 오는 방법

 

Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002

strComputer = "192.168.0.2"
strUser = "Administrator"
strPassword = "!!""
strDomain = "WORKGROUP"

 

Set objSWbemLocator = CreateObject("wbemScripting.SwbemLocator")
Set objWMIService = objSWbemLocator.ConnectServer(strComputer, _
        "root\default", _
        strUser, _
        strPassword, _
        "MS_409", _
        "ntlmdomain:" + strDomain)
Set objReg = objWMIService.Get("StdRegProv")

strKeyPath = "SYSTEM\CurrentControlSet\Control\CrashControl"
strEntryName = "DumpFile"
strValue = ""

 

objReg.GetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strEntryName, strValue

 

기본적으로 일반적인 WMI Query하는 것과 동일합니다.

단 NameSpace가 root\default로 변경된 부분과 StdRegProv를 Get해야하는 것만 틀립니다.

 

 

URI(Uniform Resource Identifier)

2013.10.06 05:30 | Posted by 로멘틱가이

URI는 Contents를 인식하기 위한 개념이다.

Windows의 AD개념과 비교하면 Computer, User, Shared Folder와 같은 Contents(Resource)를 인식하기 위한 개념이며 Web의 경우 Web Page, Computer, Resource(Video, Sound...)를 인식하기 위한 수단이다.

 

A라는 Web Site의 Picture폴더의 a.gif파일을 예로들면

http://www.a.com/Picture/a.gif 에 위치해 있음을 인식할 수 있다.

 

이런 URI는 FTP 주소와 전자우편 주소에도 사용되고 있다.

TAG URI

Vbscript Cmd 명령어 수행방법

2013.06.01 01:48 | Posted by 로멘틱가이

Command 창을 띄우지 않고 Cmd 명령어를 수행하는 방법입니다.

 

일반 구문

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

WshShell.Run "cmd /c mkdir C:\temp\SCCM"

 

Slient 구문

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

return = WshShell.Run ("cmd /c mkdir C:\temp\SCCM" ,0 ,true)

 

일반 구문으로 실행하는 경우 시간이 소요되는 명령어의 경우 Cmd 창이 뜨게 되며 Slient 구문의 경우 Cmd 창이 뜨지 않고 Background에서 수행되어집니다.

중앙 서버 관리 아키텍처

2009.04.19 16:03 | Posted by 로멘틱가이

FTP 중앙 서버로 자동화 구성하기

오늘은 FTP 중앙 서버를 구축하여 Script를 통해 다수의 서버를
관리하는 법에 대해 알아보도록 하겠습니다.

보통 서버를 관리하면서 여러가지의 사항에 대해 관리를 해야하는 경우가 많습니다.
예를들어 각 서버의 CPU를 조사를 해야하던가 하는 간단한 조사의 경우
일반적으로 다음과 같은 절차를 거쳐 조사를 하게 됩니다.

사용자 삽입 이미지
                                                         [그림1] 서버 아키텍처

위와 같이 각 개인의 컴퓨터에서 FTP 서버에 접속하여 각 서버의 데이터를 끌어올 수 있기 때문에
데이터 수집 시 관리자의 업무를 줄여줄 수 있습니다.


사용자 삽입 이미지
                                                               [그림2] 적용순서

그림 2와 같이 대부분의 업무는 Script로 자동화가 되어야한다.
Script로 자동화 하여 각 정보에 대한 Log를 서버에 보유하고 있어야하며 필요한 자료에 대해
FTP전송을 하는 예약작업을 작성함으로써 중앙 서버에서 모든 서버의 정보를 가질 수 있다.
그런 경우 [그림3]과 같이 하나의 중앙 서버에 접속함으로써 모든 서버의 정보를 가져올 수 있으며
수집결과를 분석할 수 있게 되는 것이다.
사용자 삽입 이미지
                                                             [그림3] 데이터 수집방법

이렇게 Script 작성 기술과 FTP전송 그리고 중앙관리할 수 있는 master 서버가 있는 경우
그림4와 같이 관리 편이를 얻을 수 있으며 이런 관리 편이성을 통해 관리자의 업무 강도가
줄어들 수 있을것이다.


사용자 삽입 이미지

                                                             [그림4] 도입스킬 및 장점
그럼 이런 중앙관리를 위해 필요한 스크립트에 대해 알아보도록 하겠다.
1) 예약작업
2) FTP 전송
3) 일반 관리 스크립트

1) 예약작업에 거는 방법에 대해선 기존에 작성한 글을 참조하여 작성하면 될것이다.
2) FTP 전송은 우선 중앙 서버에 FTP서버를 설치해야하며 FTP 서버 설치방법에 대해서는 책 or 인터넷에 올려놓은
다양한 글들을 참조하면 될것이다.
FTP로 전송하는 방법은 다음 스크립트를 참조한다.
'###########################################################################
'##
'## FileName : ftpFile.vbs
'## 용도 : 해당 서버의 해당 Directory에 Script 파일 생성
'## 작성자 : 권준상
'##
'###########################################################################
Const userID = FTP서버유저
Const userPasswd = FTP서버유저의 Password
Const serverIP = 서버IP
Const serverPort = 서버FTP포트
Const ForReading=1, ForWriting=2, ForAppending=3

Call Write()

Private Sub Write()
   
    Dim strFilePath
    dim strFileNM
    Dim sWriteMsg
    Dim strHostNM
    Dim fso
    Dim File
    Dim TextStream

    strFilePath = "C:\"
    strFileNM = strFilePath & "ftpupload.txt"    
   
End Sub
   
'ftp 명령어를 만들어주는 함수   
Private Function ftpFunc(strFilePath, strHostNM)

 Dim strFtp
 Dim strOFileNM
 Dim strNFileNM

 strFileNM = strHostNM & ".log"

 strFtp = ""
 strFtp = strFtp & "open " & serverIP & " " & serverPort & vbCrLf
 strFtp = strFtp & userID & vbCrLf
 strFtp = strFtp & userPasswd & vbCrLf
 strFtp = strFtp & "bin" & vbCrLf
 strFtp = strFtp & "prompt" & vbCrLf
 strFtp = strFtp & "cd /Swlist" & vbCrLf
 strFtp = strFtp & "mput " & strFilePath & strFileNM & vbCrLf
 strFtp = strFtp & "bye"

 ftpFunc = strFtp
  
End Function

위의 소스는 우선 돌아가지 않습니다..
모든 코딩은 자신이 생각해서 로직을 세워야하기에 그중 핵심 부분만 공개하며
그외의 부분에 대해서는 삭제했음을 미리 알려드립니다.

위의 부분과 다른 방식으로 접속하는 방법도 물론 많을 것이며 저것이 최적의 코딩은 아닐수도 있습니다.
제가 사용한 방식은 ftp접속을 할 수 있는 txt파일을 생성하여 해당 txt파일에 접속할 수 있는 정보를 넣은 후
원하는 파일을 해당 txt파일을 사용하여 upload하는 단순한 방법입니다.

단점은 위에서 보듯이 해당 소스에 서버 정보가 그대로 노출되게 됩니다.
보안에 취약할 수 있어 서버정보를 밖으로 빼어 binary로 만드는 것을 추천합니다.

이런식으로 FTP로 전송을 하는 script를 통해 예약된작업이 수행되게 작성을 하면
해당 정보들을 중앙 서버에 gathring하게 되며 특정 폴더 안의 파일들을 merge하게 하여 최종파일을 만들게 됩니다.

3) 일반관리 스크립트는 다양한 내용이므로 다루지는 않겠습니다.
해당 내용에 대해서는 작성 포인트 목록을 작성하여 해당 목록을 수행하는 script를 작성하면 되며
의외로 많은 항목을 도출할 수 있을 것입니다.

서버관리자들이 Window보다 Unix를 좋아하는 이유는 서버접속의 불편함 그리고 커맨드가 아닌 GUI를 사용함으로써
발생하는 처리 속도의 답답함, 정기적인 윈도우패치에 따르는 업무로드 증가와 보안이슈와 같이 다양한 원인이 있을 수
있을 것입니다.

하지만 자동화를 도입하는 경우 의외로 윈도우가 유닉스보다 관리가 용이하며 업무로드가 적다는 것을 알 수 있었습니다.

앞으로도 윈도우가 유닉스보다 더 관리가 쉽고 편하게 만드는 다양한 프로젝트를 통해
윈도우의 관리 요소를 줄이는 내용들을 많이 올리도록 하겠습니다.

그럼 긴 강좌 읽어주셔서 감사합니다.

WMI 사용 툴

2009.02.12 13:51 | Posted by 로멘틱가이
WMI 개발 툴

해당 툴들은 Microsoft의 Script Center에서 구할 수 있으며 WMI 개발에 유용한 파일들입니다.
(주소 : http://www.microsoft.com/technet/scriptcenter/default.mspx)

1) WMI Code Creator
사용자 삽입 이미지
WMI Code Creator의 가장큰 장점은 원격 서버 접속 Script를 쉽게 만들 수 있으며
각 Class별 필드를 선택할 수 있다는 점입니다.

큰 프로젝트를 기획하시는 경우 해당 필드들에 대한 몇몇의 값을 가지고 오는 Scipt가 필요한 경우
쉽게 작성 할 수 있으며 즉시 Execute Code를 수행하여 결과값을 확인할 수 있습니다.

단점은 Vbscipt로 코드가 생성되어진다는 점과 결과 값을 Command 창으로만 확인할 수 있다는
단점이 있습니다.

2) Scriptomatic
사용자 삽입 이미지
해당 툴도 Wmi Code Creator와 유사하며 Wmi Code Creator와 유사한 인터페이스를 가지고 있습니다.
다만, 필드를 선택할 수 없다는 단점을 가지고 있습니다.
Wmi Code Creator와 비교할때 장점은 생성 언어를 선택할 수 있으며 Output Format을 선택할 수 있다는 점입니다.

해당 툴들은 WMI에 대해 잘 몰라도 쉽게 결과값을 보여줄 수 있기 때문에
WMI를 쉽게 사용하는데 큰 도움이 된다고 생각되어집니다.
이전 1 2 3 4 다음

티스토리 툴바