http://ApacheIP:80/web-inf/web.xml 파일 안보이기
1) 웹 서버 혹은 웹 어플리케이션 서버에서 디렉토리 인덱싱 기능을 비활성화 시킨다.
[tomcat의 예제]
<!--web.xml-->
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
[apache의 예제]
<!--httpd.conf-->
#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive Off
#2009.12.08 Namha
Options IncludesNoExec FollowSymLinks
#Options FollowSymLinks MultiViews
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.0/mod/core.html#options
# for more information.
#
# Options FollowSymLinks
Alias /icons/ "D:/Amail/app/Apache2/icons/"<Directory "D:/Amail/app/Apache2/icons">
Options MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory><Directory "D:/Amail/ems52/market/ems/WEB-INF">
Options MultiViews
AllowOverride None
Order allow,deny
Deny from all
Allow from 88.10.1
</Directory>
<Directory "D:/Amail/app/Apache2/manual">
#2009.12.08 Namha
# Options Indexes
AllowOverride None
Order allow,deny
Allow from all<Files *.html>
SetHandler type-map
</Files>SetEnvIf Request_URI ^/manual/(de|en|es|fr|ja|ko|ru)/ prefer-language=$1
RedirectMatch 301 ^/manual(?:/(de|en|es|fr|ja|ko|ru)){2,}(/.*)?$ /manual/$1$2
</Directory>
#
# AddHandler allows you to map certain file extensions to "handlers":
# actions unrelated to filetype. These can be either built into the server
# or added with the Action directive (see below)
#
# To use CGI scripts outside of ScriptAliased directories:
# (You will also need to add "ExecCGI" to the "Options" directive.)
#
AddHandler cgi-script .cgi
<Directory "/usr/local/apache/htdocs">
#
#
# This may also be "None", "All", or any combination of "Indexes",
# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#수전전 Options Indexes FollowSymLinks MultiViews
수정후 Options FollowSymLinks MultiViews#
# This controls which options the .htaccess files in directories can
# override. Can also be "All", or any combination of "Options", "FileInfo",
# "AuthConfig", and "Limit"</Directory>
2) 웹 소스가 위치한 웹 디렉토리에서 임시/백업 파일 및 설치 파일의 존재여부를 조사하여 이를 삭제한다.
3) 웹 서버나 웹 어플리케이션 서버 설치시 자동 생성되는 파일 중 외부에 정보를 노출 할 수 있는 메뉴얼 파일, 샘플등을 조사하여 이를 삭제한다.
Tag : apache, linsting, mod_jk, tomcat
public class Test {
public static final String getJumin(String str) {
String str1 = str;
if( str1 == null){
return "Number is null";
}else if(str1.length() == 10){
return str1.substring(0, 3) + "-" + str1.substring(3, 5) + "-" + str1.substring(5, 6) +"****";
}else if(str1.length() == 13){
return str1.substring(0, 6) + "-" + str1.substring(6, 7)+ "******";
}else{
return "wrong number";
}
}
public static void main(String [] args){
//String jumin_num = getJumin("8211061151234");
String jumin_num = getJumin("1168169356");
System.out.println("주민 번호: "+jumin_num);
}
}
* TB_INST_INPUT테이블에 SUBS_VALUE 데이터가 |구분자로 값이 들어오는 경우
-- SUBS_VALUE 컬럼의 데이터를 | 구분자로 짤라 각각 매핍변수로 선언
SELECT SUB1,SUB2,SUB3,SUB4,SUB5,SUB6,SUB7,SUB8,SUB9,SUB10,SUB11,SUB12,SUB13,SUB14,
SUB15
FROM(SELECT
MAX(DECODE(rowno,1,aa)) SUB1
,MAX(DECODE(rowno,2,aa)) SUB2
,MAX(DECODE(rowno,3,aa)) SUB3
,MAX(DECODE(rowno,4,aa)) SUB4
,MAX(DECODE(rowno,5,aa)) SUB5
,MAX(DECODE(rowno,6,aa)) SUB6
,MAX(DECODE(rowno,7,aa)) SUB7
,MAX(DECODE(rowno,8,aa)) SUB8
,MAX(DECODE(rowno,9,aa)) SUB9
,MAX(DECODE(rowno,10,aa)) SUB10
,MAX(DECODE(rowno,11,aa)) SUB11
,MAX(DECODE(rowno,12,aa)) SUB12
,MAX(DECODE(rowno,13,aa)) SUB13
,MAX(DECODE(rowno,14,aa)) SUB14
,MAX(DECODE(rowno,15,aa)) SUB15
FROM(
SELECT SUBSTR( RCVDATA,
INSTR (RCVDATA, '|', 1, LEVEL) + 1,
INSTR (RCVDATA, '|', 1, LEVEL + 1) -
INSTR (RCVDATA, '|', 1, LEVEL) - 1 ) aa,
ROWNUM AS rowno
FROM (SELECT '|' || SUBS_VALUE ||'|' RCVDATA
,ROWNUM
FROM TB_INST_INPUT
--WHERE INSTID = '@{EMS_M_ID}'
)
CONNECT BY LEVEL<= LENGTH(RCVDATA) -
LENGTH(REPLACE(RCVDATA, '|')) - 1
)
WHERE ROWNUM <= '15'
)
WHERE ROWNUM = 1
-- SUBS_VALUE 컬럼의 데이터를 | 구분자로 짤라 한개의 데이터로 조합
SELECT a1||a2||a3||a4||a5||a6||a7||a8||a9||a10||a11||a12||a13||a14 totaldata
FROM(SELECT MAX(DECODE(rowno,1,aa)) a1
,MAX(DECODE(rowno,2,aa)) a2
,MAX(DECODE(rowno,3,aa)) a3
,MAX(DECODE(rowno,4,aa)) a4
,MAX(DECODE(rowno,5,aa)) a5
,MAX(DECODE(rowno,6,aa)) a6
,MAX(DECODE(rowno,7,aa)) a7
,MAX(DECODE(rowno,8,aa)) A8
,MAX(DECODE(rowno,9,aa)) a9
,MAX(DECODE(rowno,10,aa)) a10
,MAX(DECODE(rowno,11,aa)) a11
,MAX(DECODE(rowno,12,aa)) a12
,MAX(DECODE(rowno,13,aa)) a13
,MAX(DECODE(rowno,14,aa)) a14
FROM(SELECT SUBSTR( RCVDATA,
INSTR (RCVDATA, '|', 1, LEVEL) + 1,
INSTR (RCVDATA, '|', 1, LEVEL + 1) -
INSTR (RCVDATA, '|', 1, LEVEL) - 1 ) aa
,ROWNUM AS rowno
FROM (SELECT '|' || SUBS_VALUE || '|' RCVDATA
,ROWNUM
FROM TB_INST_INPUT)
CONNECT BY LEVEL<= LENGTH(RCVDATA) -
LENGTH(REPLACE(RCVDATA, '|')) - 1)
WHERE ROWNUM <= '14'
)
-- SUBS_VALUE 컬럼의 데이터를 | 구분자로 짤라 리스트 데이터로 조합
SELECT SUBSTR( RCVDATA,
INSTR (RCVDATA, '|', 1, LEVEL) + 1,
INSTR (RCVDATA, '|', 1, LEVEL + 1) -
INSTR (RCVDATA, '|', 1, LEVEL) - 1 ) aa
FROM (SELECT '|' || SUBS_VALUE || '|' RCVDATA FROM TB_INST_INPUT)
CONNECT BY LEVEL<= LENGTH(RCVDATA) -
LENGTH(REPLACE(RCVDATA, '|')) - 1;
참조 - 이동준형 마음ㅋ
Tag : DECODE, instr, length, max, Oracle, Rownum, substr, 구분자
root권한으로
crontab -e 등록&수정
crontab -l 확인
vi /var/log/cron 크론로그 확인
#!/bin/sh
#날짜 디렉토리 찾기
Year=`date +"%Y"`
Mon=`date +"%m"`
Day=`date +"%d"`
# 로그파일들을 당일분만 남겨놓고 나머지는 삭제한다.
#/usr/bin/find /data2/namha/ems51/auto/tmp/$Year/$Mon/. -name '??' -mtime +1 -exec /bin/rm -rf {} \;
#/usr/bin/find /data2/namha/ems51/auto/$Year/$Mon/. -name '??' -cmin +720 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/auto/agent_log/ -name '??' -mtime +7 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/auto/tmp/ -name '??' -mtime +14 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/auto/log/ -name 'send_*' -mtime +30 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/auto/log_process/ -name 'back_*' -mtime +30 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/auto/trace/ -name '??' -mtime +14 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/jupiter/agent_log/ -name '??' -mtime +7 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/jupiter/log/ -name 'send_*' -mtime +30 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/jupiter/log_process/ -name 'back_*' -mtime +30 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/jupiter/trace/$Year/$Mon/. -name '??' -mtime +14 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/sms_mass/agent_log/ -name 'db_*' -mtime +7 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/sms_mass/trace/ -name 'send_*' -mtime +14 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/sms_auto/agent_log/ -name '??' -mtime +7 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/sms_auto/trace/ -name '??' -mtime +14 -exec /bin/rm -rf {} \;
fine : 파일을 찾는다
/export/home/tester : /export/home/tester 디렉토리 이하에서 찾는다.
-mtime +30 : 파일 변경된 날짜가 30일 이상인 파일을 찾는다
-print : 파일을 찾아서 화면에 보여준다.
-exec : -print에 의해 출력되는 파일을 뒤에 오는 명령어의 인수로 입력된다.
rm -f : -exec에 의해 받은 인수파일을 삭제한다.
{} \; - exec끝을 의미한다.
전체적인 의미는 /export/home/tester 디렉토리에서 파일내용이 변경된지 30일이 지난 파일을 찾아서 삭제하는 명령입니다.
위 명령어를 crontab에 등록 시킨후 매일 한번씩 실행 시키면 될것 같습니다.
보다 자세한 내용은 man find를 이용해 보세요
일정 주기로 처리하는 배치 프로세스의 경우 시스템 crontab에 등록 하여 자동화 시킬 수 있다.
======== 아래것은 ========
* crontab 명령
-e: 등록된 crontab을 편집한다.
-l: 등록된 crontab명령을 출력한다.
-r: 등록된 crontab을 삭제한다.
* crontab 편집
위 명령을 입력하면 vi 환경에서 crontab 편집이 된다
참조 - http://newtype.tistory.com/tag/crontab
예 kfm08ot1이라는 테이블의 bnk_cd ='04' 인 데이터를 실수로 삭제를 했다.
commit; 도 완료된 상태라면..
앞이 막막할것이다.
이럴땐 이렇게 데이터를 불러보자..
SELECT * FROM KFM08OT1
as of timestamp ( systimestamp - interval '10' minute)
where bnk_cd = '04'
조회후 파일을 txt나 엑셀로 저장후..
다시 임포트 해야 합니다.
아래와같은 방법으로 해보니 된다....ㅋㅋ 엑셀로 임포트 작업안해도됨!!