반응형

오늘은 Shell script를 이용해서 jar파일을 생성하는 글을 써 보려 한다.

 

eclipse에서도 export 도구를 통해서 jar파일을 생성할 수 있다. 하지만, 만약 eclipse와 같은 tool을 사용할 수 없다면, 어떻게 해야하나?

 

그렇다면 아래 방법대로 jar파일을 묶어서 관리할 수 있도록 하자. 순서는 다음과 같이 하도록 한다.

 

[1] jar파일 생성 순서

(1) classe path 디렉토리 이하 모든 class파일들을 삭제한다.

 

(2) ant build를 이용해서 다시금 classs 파일의 내용을 빌드한다.

 

(3) svn 을 사용중이라면 svn 관련파일을 모두 삭제한다.

 

(4) 컴파일된 class 파일만을 이용하여 jar파일을 묶는 작업을 실시한다.

 

[2] 실제 아래 소스를 보도록 하자.

 ** makejar.sh **

#! /bin/sh

 

rm -rf ../bin/*
echo "(1) Previous class file delete"

 

./dant
echo "(2) Recompile Success"

 

find ../bin -name *.svn -exec rm -rf {} \;
echo "<3> SVN FILE DELETE"

 

cd ../bin/

jar -cf ../shell/${1} ./com/
echo "<4> Make Jar File"

 

cd ../shell/

 

[3] 실행결과

$ ./makejar.sh aaaa.jar
(1) Previous class file delete
java version "1.6.0_30"
Java(TM) SE Runtime Environment (build 1.6.0_30-b12)
Java HotSpot(TM) Client VM (build 20.5-b03, mixed mode)
Buildfile: D:\SVN\rndtech\KPU\Source\RUNA_API\shell\build.xml

RUNA_API:
    [javac] Compiling 9 source files to D:\SVN\rndtech\KPU\Source\RUNA_API\bin
    [javac] D:\SVN\rndtech\KPU\Source\RUNA_API\src\com\runa\common\collection\RBox.java
    [javac] D:\SVN\rndtech\KPU\Source\RUNA_API\src\com\runa\common\collection\RBoxList.java
    [javac] D:\SVN\rndtech\KPU\Source\RUNA_API\src\com\runa\common\collection\RLog.java
    [javac] D:\SVN\rndtech\KPU\Source\RUNA_API\src\com\runa\common\crypto\Base64.java
    [javac] D:\SVN\rndtech\KPU\Source\RUNA_API\src\com\runa\common\crypto\Crypto.java
    [javac] D:\SVN\rndtech\KPU\Source\RUNA_API\src\com\runa\common\exception\BizException.java
    [javac] D:\SVN\rndtech\KPU\Source\RUNA_API\src\com\runa\common\util\CommonMenu.java
    [javac] D:\SVN\rndtech\KPU\Source\RUNA_API\src\com\runa\common\util\CommonThumbnail.java
    [javac] D:\SVN\rndtech\KPU\Source\RUNA_API\src\com\runa\common\util\CommonUtil.java

BUILD SUCCESSFUL
Total time: 2 seconds
(2) Recompile Success
<3> SVN FILE DELETE
<4> Make Jar File 

 

위 예제를 보게 되면 [1] 의 순서와 맵핑이 되는 것을 알 수 있을 것이다. 저렇게 shell script를 작성해 두면

 

API 묶음을 만들때 아주 유용하게 써먹을 수 있다. ANT Build하는 방법에 대해서는 알아서 체크해보기 바란다.

 

 

                                                                              - 2012.08.27 랑이씀 -

반응형
반응형

오늘 이시간에는 cron 데몬을 이용한 스케쥴러 관리에 대해서 알아보도록 하자.

 

우선 Daemon의 정의가 무엇인지를 아는것이 이해의 첫번째 코스인것 같다.

 

[1] Daemon이란?

정의 : OS에서 백그라운드로 구동되고있는 프로세스 를 데몬이라고 부른다.

백그라운드에서 구동중인 데몬의 종류는 여러가지가 있지만, 대표적으로 스케쥴러 관리에 사용되는 데몬이 바로 cron데몬이다.

 

[2] Cron 데몬 설정방법

(1) 일반 User레벨에서의 Daemon 설정방법

- 유닉스계통의 시스템을 처음 Install 하고 나면 User레벨의 Cron은 별도 설정을 해주어야만 등록 가능하다. 등록하는 위치는 아래 경로와 같다.

 

/etc/cron.allow (Cron 사용가능하도록 유저를 등록한다.) 

/etc/cron.deny (Cron 데몬 사용 불가능하도록 유저를 등록한다.)

 

우선 /etc/cron.allow 파일을 새로 만들어서 등록 하도록 하자. 만약 이미 해당파일이 존재한다면 vi 에디터로 수정만 하면 될것이다.

 

 #vim /etc/cron.allow

 

ex ) 아래 예제처럼 엔터값을 넣으면서 입력하면된다.

 

 ==>요렇게 등록하면 된다. 이경우 ddong, dochi 두개의 계정에서 cron 등록 가능하다.

 

(2) Cron 데몬을 하기 위해 Shell Script를 작성하도록 한다. (아래 예제는 7일 단위로 DB를 백업하는 예제이다.)

 

(Shell Script 파일명 : db_cron_backup.sh)

 #! /bin/bash

DATE=`date +%Y%m%d%H%M%S`
HOME="/home/cron/log"
FILENAME="$HOME/BACKUP_SQL_$DATE.sql"

mysqldump -u root -proot1234 dbname > $FILENAME

DEL_TIME=`date --date '7 days ago' +%Y%m%d`
DEL_OBJ_FILE="$HOME/BACKUP_SQL_$DEL_TIME"

rm -rf $DEL_OBJ_FILE*

echo "********************************** AMT DB BACKUP *************************************"
echo "** TIME : $DATE                                                            **"
echo "** FILENAME : $FILENAME   **"
echo "** DELETE FILES : `ls $DEL_OBJ_FILE*`             **"
echo "**************************************************************************************"

 

위의 파일을 이제 Cron 데몬에 등록하도록 하자.

 

(3) Crontab 을 이용한 Cron 데몬 설치

 

(crontab 명령어 기술) 

 Crontab 명령어

설        명 

 #crontab -l

 현재 선택된 cron 데몬의 내용을 보여준다. 

 #crontab -e

 cron 데몬을 등록,수정 할 수 있다. 

 #crontab -r

 cron 데몬을 삭제 할 수 있다. 

 

(crontab 스케쥴러 등록 작성법)

입력 필드 

필드 의미 

범 위 

 1

분 

  0~59 

 2

  0~23

 3

  0~31 

 4

월 

  1~12

 5

요일

  0~7(1=월,2=화,...7=일,0=일) 

 6

실행 명령어

  쉘스크립트 실행명령어를 기록한다.

 

위 쉘 스크립트 의 경우 아래와 같이 등록하도록 한다.

 

(조건)

매일 24시 00분 00초에 실행되도록 한다.

 

(crontab -e 를 실행하여 작성한다)

# 10초단위로 실행된다.
0 0 * * * /home/cron/db_cron_backup.sh >> /home/cron/log/cron_db_backup.log

 

이렇게 하면  끝난다. 다음번에 기회가 생길때 시스템 관리자 관점의 root계정에서의 시스템 크론에 대해서 알아보도록 하자.

 

                                                                                                     - 2012.07.30 랑이씀 -

반응형
반응형

IE 개발자 도구가 보이지 않을때 아래 레지스트리를 메모장에 저장후 실행시키면 F12눌렀을때~

 

짜~~잔 하고 나오게 된다.

 

왜 안보이는지는 잘 이해못하겠다.

 

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IEDevTools]
"Disabled"=dword:00000000
"UseDevToolsDebugger"=dword:00000001
"Pinned"=dword:00000000
"Minimized"=dword:00000000
"MinimizedRestoreHeight"=dword:00000000
"MenuBar"=dword:00000001
"ActiveTab"=dword:00000000
"ActivePaneLeft"=dword:00000000
"WindowPos"=hex:0a,00,00,00,0a,00,00,00,00,04,00,00,00,03,00,00
"1"=hex:

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IEDevTools\Options]
"ValidateHtml"="http://go.microsoft.com/fwlink/?LinkID=129216&;verbose=1&uri=%url%"
"ValidateCss"="http://go.microsoft.com/fwlink/?LinkId=129217&;profile=css2&warning=2&uri=%url%"
"ValidateRss"="http://go.microsoft.com/fwlink/?LinkId=129220&;url=%url%"
"ValidateLocalHtml"="http://go.microsoft.com/fwlink/?LinkId=129218"
"ValidateLocalCss"="http://go.microsoft.com/fwlink/?LinkId=129219"
"ValidateLinks"="http://go.microsoft.com/fwlink/?LinkId=129221&;check=Check&hide_type=all&summary=on&uri=%url%"
"ValidateAcc508"="http://go.microsoft.com/fwlink/?LinkId=129222&;rptmode=-1&url1=%url%"
"ValidateAccWCAG"="http://go.microsoft.com/fwlink/?LinkId=129223&;rptmode=2&url1=%url%"
"ValidateHtmlDomain"="w3.org"
"ValidateCssDomain"="w3.org"
"ValidateRssDomain"="feedvalidator.org"
"ValidateLocalHtmlDomain"="w3.org"
"ValidateLocalCssDomain"="w3.org"
"ValidateLinksDomain"="w3.org"
"ValidateAcc508Domain"="contentquality.com"
"ValidateAccWCAGDomain"="contentquality.com"

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IEDevTools\Options\BkgColor]
"ClassIDBkgColor"="#FFCCCC"
"LinkPathBkgColor"="#FFCCCC"
"TabIndexBkgColor"="#FFCCCC"
"AccessibilityBkgColor"="#FFCCCC"
"ImgDimsBkgColor"="#FFCCCC"
"ImgSrcBkgColor"="#FFCCCC"
"ImgSizeBkgColor"="#FFCCCC"
"ImgAltTxtBkgColor"="#FFCCCC"
 
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IEDevTools\Options\DisableScript]
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IEDevTools\Options\Resize]
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IEDevTools\Options\Ruler]
"SnapToXY"=dword:00000001
"SnapToElements"=dword:00000000
"HideTicks"=dword:00000000
"HideEndPoints"=dword:00000000
"RulerCurrentColor"=dword:00000000
"RulerColor1"=dword:00ffffff
"RulerColor2"=dword:00000000
"RulerColor3"=dword:000000ff
"RulerColor4"=dword:0000ff00

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IEDevTools\Options\ZoneOptions]
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IEDevTools\ValidateConsent] 

 

 

다시만들기 귀찮으니, 내가 만든걸 업로드 해놓는다.

 

귀찮으신 분은 ===> 요기를 누르세요 ie.reg

 

반응형
반응형

CentOS 에서는 Install을 하는경우 자동적으로 Iptables 방화벽이 설치되는 것 같다.

 

그럼 우선 설치다하고 나서 WAS , MYSQL 등등의 Setting 후 외부에서 접속하는 방법에 대해서 알아보자.

 

[1] 방화벽 설정파일은 어디있는가?

아래 경로를 보면 방화벽 설정파일을 열어볼 수가 있다.

 # vim /etc/sysconfig/iptables

 

[2] 설정파일을 대충 파악하자.

# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

 

(노랑색) 위 설정을 보면 22번 sshd port가 현재 열려있는것을 확인가능하다.

(파랑색) 또한 22번 이외의 다른 것들은 모두 막아라 라는 코드가 있다.

 

그럼 3306,21,80 포트를 를 추가하여 보자.

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 

 

위 처럼 포트를 추가하고 저장한다음 잘 추가되었는지 보도록 하자.

 

단!! 주의사항은 위 파랑색으로 된 -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

요코드드는 삭제한 후에 해야 한다 그럼 다음과 같이 되겠죠?

 

 

 # Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

COMMIT

 

자 , 이제 iptables가 잘 적용이 되었는지 확인해 보도록 하자.

 

 

[root@localhost sysconfig]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere             anywhere            icmp any
ACCEPT     esp  --  anywhere             anywhere
ACCEPT     ah   --  anywhere             anywhere
ACCEPT     udp  --  anywhere             224.0.0.251         udp dpt:mdns
ACCEPT     udp  --  anywhere             anywhere            udp dpt:ipp
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ipp
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ftp
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:mysql
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http

[root@localhost sysconfig]# 

 

위 보는바와 같이 적용이 잘 되었다. 이제 데몬을 재시작 하도록 하자.

 

 # /etc/init.d/iptables restart

 

 

다시 이제 방화벽을 적용해야 한다, 아까 위에서 빼버린 코드를 넣고 다시금 재시작 하도록 한다.

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited 코드 추가함

 

최종 적으로 , 다시 iptables -L 명령어를 통해 보도록 하자.

 

 

[root@localhost sysconfig]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere             anywhere            icmp any
ACCEPT     esp  --  anywhere             anywhere
ACCEPT     ah   --  anywhere             anywhere
ACCEPT     udp  --  anywhere             224.0.0.251         udp dpt:mdns
ACCEPT     udp  --  anywhere             anywhere            udp dpt:ipp
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ipp
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ftp
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:mysql
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited

 

위 코드에서 보듯이 다시금 reject를 통해서 방화벽이 추가된 것을 확인할 수 있따.

 

이상이 IPTABLES의 PORT를 여는 방법에 대해서 서술 하였다.

 

 

                                                                            - 2012.07.02 랑이씀 -

 

반응형

+ Recent posts