2014년 10월 28일 화요일

현재 접속자 중 해외에서 접속한 사람이 있는 지 확인 하는 파워쉘 스크립트.

이 스크립트를 사용하려면 kisa에서 whois openapi key 발급 받아야 됨.


###################### Config ######################
#kisa 에서 발급받은 api key
#http://whois.kisa.or.kr/kor/whois/openAPI_KeyCre.jsp
$kisaKey = "00000000000000000000"
###################### Config ######################




###### kisa open api를 이용해 한국 아이피인지 체크 ########
function whoisKR ($IpAddress)
{
if(-not $IpAddress) {echo "input ip address"; return}

$countryCode = ""

# Do whois lookup with ARIN on the IP address, do crude error check.
$webclient = new-object System.Net.WebClient
$webclient.Encoding = [System.Text.Encoding]::UTF8
[xml][/xml] $ipxml = $webclient.DownloadString("http://whois.kisa.or.kr/openapi/ipascc.jsp?key=$kisaKey&query=$IpAddress&answer=xml")
if (-not $?) { echo "error" ; return }

$countryCode = $ipxml.whois.countryCode

if($countryCode -ne "KR")
{
return $FALSE #NOT KR
}else{
return $TRUE #KR
}

}
###### kisa open api를 이용해 한국 아이피인지 체크 ########


#whoisKR
#whoisKR "222.122.20.1"
#whoisKR "54.217.151.196"


###### MAIN
###### netstat 를 통해 외부 IP가 한국 꺼인지 아닌 지 체크. ########
###### 한국이 아니면 해당 IP를 deny 룰에 적용. ########
###### 참조 : http://www.lazywinadmin.com/2014/08/powershell-parse-this-netstatexe.html
$ForeignAddressIP = @()

# Get the output of netstat
$data = netstat -nat

# Keep only the line with the data (we remove the first lines)
$data = $data[5..$data.count]

# Each line need to be splitted and get rid of unnecessary spaces
foreach ($line in $data)
{
# Get rid of the first whitespaces, at the beginning of the line
$line = $line -replace '^\s+', ''

# Split each property on whitespaces block
$line = $line -split '\s+'

$temp = ($line[2] -split ":")[0]

#예외처리
switch ($temp)
{
"0.0.0.0" {}
"127.0.0.1" {}
"*"{}
"["{}
default {$ForeignAddressIP += $temp}
}

}


$ForeignAddressIP = $ForeignAddressIP | Sort-Object -unique
foreach( $checkIP in $ForeignAddressIP)
{
#한국이면 true, 아니면 false
if(whoisKR $checkIP)
{
'한국 IP : ' + $checkIP
}else{
'!!!!경고, 한국 IP 아님!!!! : ' + $checkIP
}
'-----------------------'

}

cmd /c pause | out-null

2014년 10월 16일 목요일

TP-LINK TL-WN725N 에러

무선 USB 어뎁터인 TP-LINK의 TL-WN725N 사용중.
SoftAP 모드 설정 중 에러 발생.

인터넷 연결 공유(ICS) 구성 실패, SoftAP에 연결할 수 있으나 인터넷 서비스 공유에는 문제가 있을 수 있습니다.

해결책.
제어판 -> 네크워크 및 인터넷 -> 네트워크 연결

Microsoft Virtual WiFi Miniport Adapter 장치를 사용함으로 변경.

드라이버 다운로드

2014년 10월 8일 수요일

HP System Management Homepage 리눅스 설치

HP System Management Homepage 리눅스 설치

HP 장비에 윈도우를 설치할 때는 smart start를 이용해서 설치 하기 때문에
"System Management Homepage" 소프트웨어가 자동으로 설치된다. (이하 smh)

리눅스는 직접 설치하기 때문에 그런거 없다.
리눅스에 shm 를 설치해 보자.



  1. 아래 사이트에 접속해서, 자신의 HP 장비를 찾는다.
    http://h20565.www2.hp.com/portal/site/hpsc

  2. Dowload option에 Get drivers, software & firmware.를 눌러 들어간다.

  3. 지원하는 OS 종류를 선택하는 데, 필자는 CentOs 5 32bit 버젼을 쓰기 때문에, "Red Hat Enterprise Linux 5 Server (x86)" 를 클릭.

  4. Software - System Management 부분으로 간다.

  5. "* RECOMMENDED * HP System Management Homepage for Linux (x86) (American, International)" 클릭

  6. Dowload 버튼을 눌러 다운을 받고, 해당 rpm 파일을 서버에 올린다.

  7. rpm 설치
    rpm -Uvh hpsmh-7.4.0-13.i386.rpm



* 찾기 힘들다면, HP 레포지토리를 이용하는 것도 좋다.

* 몇몇 서버들은 각각의 다운로드 대신에 "소프트웨어 - 서포트팩 -> 관리 구성 요소 팩"만 존재할 수도 있다.

해당 파일을 다운로드 하면 여러가지 설치파일들이 한꺼번에 들어가 있는 경우도 있다.( ex. DL380 G6)



rpm만 설치해도 smh 화면에는 들어갈수는 있는데, 뭐 볼 게 없다.

진단툴도 같이 설치해 줘야 그나마 볼만한게 나온다.

이전화면으로 돌아가서 "* RECOMMENDED * HP Insight Diagnostics Online Edition for Linux (x86 32-bit)" 도 위와 같은 방식으로 설치 한다.

smh는 설치 완료하면 자동으로 실행 된다.

실행되고 있는 지 확인.
ps aux | grep hpsmh
netstat -nat | grep :2381

진단툴까지 설치가 완료 되었으면 smh 화면으로 들어가 보자.



  1. 브라우저에서 서버의 아이피와 포트번호 2381로 접속하자.
    예: http://123.123.123.123:2381

  2. 자동으로 https로 넘어가며 경고창이 뜨는데 무시하자.  그러면 윈도우에서 보던 smh 화면을 볼수 있다.
    User Name 은 "root", Password는 "root 패스워드" 이다.

  3. 로그인을 완료하면 상단에 webapp으로 들어간다.

  4. 하단에 other agent 부분에  "HP Insight Diagnostics " 클릭.

  5. 새창이 뜨면서 장비의 상세 정보를 볼수 있다.

2014년 10월 6일 월요일

Caused by: java.lang.Exception: Connector attribute SSLCertificateFile must be defined when using SSL with APR

 APR connector  사용하면  keystore 파일을 사용할 수 없다고 한다.

Caused by: java.lang.Exception: Connector attribute SSLCertificateFile must be defined when using SSL with APR

 

 

server.xml 상단에

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

부분 주석처리.

ps.
cert 파일로 지정하는 법.

"index '%s.%s' or partition of such index is in unusable state"

오류 보고 -
SQL 오류: ORA-01502: index 'ORAWEB.PK_MEMBER_LOGIN_LOG' or partition of such index is in unusable state
01502. 00000 - "index '%s.%s' or partition of such index is in unusable state"
*Cause: An attempt has been made to access an index or index partition
that has been marked unusable by a direct load or by a DDL
operation
*Action: DROP the specified index, or REBUILD the specified index, or
REBUILD the unusable index partition



이렇게 리빌드.

ALTER INDEX <owner>.<name> REBUILD;





전체  INDEX 리빌드
SELECT 'alter index "ORAWEB"."' || OBJECT_NAME ||'" rebuild;' FROM USER_OBJECTS WHERE OBJECT_TYPE='INDEX';

...

alter index "ORAWEB"."PK_PAY_RES_LOG" rebuild;
alter index "ORAWEB"."PK_PRINTER" rebuild;
alter index "ORAWEB"."PK_PUSH_MESSAGE_S" rebuild;
...

ORAWEB 은 OWNER이다.

위의 select 값을 복사해서 실행.

2014년 10월 1일 수요일

ctime, mtime 차이점

리눅스를 사용하면서 변경시각과 수정시각이란 말을 들을 수 있다.

ctime : 변경 시각(change time)

mtime : 수정시각(modification time)

 

말뜻이 애매해서 비슷하게 생각되지만, 차이점이 있다.

변경(ctime)은 파일의 아이노드(inode)를 바꾸는 것이고,
수정(mtime)은 파일의 내용 자체를 바꾸는 것이다.

 

예를 들어서 aaa.txt 라는 파일이 있을 때
#chmod 755 aaa
이런 명령을 사용하면 파일내용에는 변경이 없지만, inode 값은 바뀌게 된다.

수정은
#echo aa >> aaa.txt
라고 하면 파일내용이 수정되는 것이고, timestamp 값이 변경 되게 된다.

 

그리고 또 하나는 접근 시각(access time)도 알아보자.
접근시각이란 해당 파일을 마지막으로 읽거나 쓴 시각을 말한다.
따라서 파일을 읽기만 한다면 변경시각이나 수정시각은 변하지 않고, 접근시각만 달라진다.

find 관련 문서를 찾다보면 ctime(change time):변경시각을 '생성시각(creation time)'이라고 설명하고 있는
문서가 있는데 이런 해석은 옳지 않다.

 

참고 :유닉스 파워툴

2014년 9월 18일 목요일

apache multiviews 기능

서버 이전을 했는데, 이미지를 못 불러오는 부분이 있었다.

해당 이미지를 불러오는 데, 이미지 이름으로만 불러오는 것이었다. 확장자 없이...

예를 들어 /image.jpg 를 불러 온다고 했을 때, 보통은

http://www.site.co.kr/image.jpg

이런식으로 불러온다.



그런데 저기서 확장자가 없이

http://www.site.co.kr/image

이런식으로 호출해도 이미지가 뜨는 것이다.



원인은 아파치 설정의 MultiViews 설정이었다.

아파치 문서를 찾아 보니 다음과 같다고 한다.
MultiViews를 사용하면 다음과 같은 일이 일어난다.
서버가 /some/dir/foo에 대한 요청을 받고 /some/dir/foo에 MultiViews가 동작하며 /some/dir/foo가 존재하지 않을 경우,
서버는 디렉토리에서 이름이 foo.*인 파일들을 모든 포함하는 가상의 type map을 만든다.
클라이언트가 요청한 media type과 content-encoding을 가지고 이중에 가장 적합한 것을 선택한다.

테스트 결과 대부분의 이미지는 확장자 없이도 제대로 보여 주었고, html 같은 경우도 형식만 제대로 되어 있으면 인식 되었다.