시스템/Linux2016. 4. 28. 17:49

Sendmail 설정



vi /etc/mail/sendmail.mc


===== 변경전(원본) =====

dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

...

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl



위 라인을 아래와 같이 수정 


===== 변경 후 =====

TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

...

DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl

 


m4 tool을 이용하여 sendmail.cf 파일을 재생성해 준다.


m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf



vi /etc/mail/sendmail.cf 


#Dj$w.Foo.COM


위 항목을 아래와 같이 수정한다. 저 상태로 두면 localhost.localdomain.com 으로 메일이 발송되므로 수신측 차단됨


Dj[도메인명]


저장 후 sendmail 서비스를 재시작 한다.


# vi /etc/mail/local-host-names

[domain name]  RELAY

 

해당 파일에 추가한 도메인으로 메일이 오면 서버내의 로컬계정의 메일박스로 메일이 수신됨

 

외부에서 서버의 sendmail을 통하여 메일 발송시 아무나 보낼 수 없도록 설정


# vi /etc/mail/access

[domain name] [option]

 

- Option

RELAY - host 에서 지정된 메일 허용

REJECT - host 에서 지정된 메일 거부

DISCARD - 메일을 받은후에 폐기, 발신자는 메일이 발신된것으로 알게됨

OK - host 에서 지정된 메일의 모든것을 허용


access 파일을 수정 후 적용하기 위해서 아래의 명령어를 실행해야 함


# makemap hash /etc/mail/access < /etc/mail/access

 

서버에 존재하지 않은 계정으로 온 메일을 서버내의 로컬계정의 메일박스로 전달해준다.


# vi /etc/mail/virtusertable

[mail address] [user name]






dovecot 설치 & 설정


http://dovecot.org/ 

위 사이트에서 알맞은 버전의 소스를 다운받는다.

# wget http://dovecot.org/releases/1.1/dovecot-1.1.2.tar.gz
# tar xvfz dovecot-1.1.2.tar.gz
# cd dovecot-1.1.2
# ./configure --prefix=/usr/local/dovecot --localstatedir=/var --with-pam --with-gssapi --with-mysql
# make
# make install
# groupadd -g 97 dovecot
# useradd -u 97 -g 97 -d /usr/libexec/dovecot -s /sbin/nologin dovecot

아래와 같은 내용으로 설정파일을 작성(imap 만 사용할 경우)

# vi /usr/local/dovecot/etc/dovecot.conf

protocols = imap
disable_plaintext_auth = no
ssl_disable = yes
protocol imap {
}
auth default {
mechanisms = plain
passdb passwd {
}
passdb shadow {
}
userdb passwd {
}
user = root
}
plugin {
}
mail_privileged_group = mail


아래와 같이 서비스 실행 파일을 만든다.


# vi /etc/rc.d/init.d/dovecot



#!/bin/bash

#

#   /etc/rc.d/init.d/dovecot

#

# Starts the dovecot daemon

#

# chkconfig: - 65 35

# description: Dovecot Imap Server

# processname: dovecot

# Source function library.

. /etc/init.d/functions


test -x /usr/local/dovecot/sbin/dovecot || exit 0


RETVAL=0

prog="Dovecot Imap"


start() {

        echo -n $"Starting $prog: "

    daemon /usr/local/dovecot/sbin/dovecot

    RETVAL=$?

    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/dovecot

    echo

}


stop() {

    echo -n $"Stopping $prog: "

    killproc /usr/local/dovecot/sbin/dovecot

    RETVAL=$?

    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/dovecot

    echo

}


#

#   See how we were called.

#

case "$1" in

  start)

    start

    ;;

  stop)

    stop

    ;;

  reload|restart)

    stop

    start

    RETVAL=$?

    ;;

  condrestart)

    if [ -f /var/lock/subsys/dovecot ]; then

        stop

        start

    fi

    ;;

  status)

    status /usr/local/dovecot/sbin/dovecot

    RETVAL=$?

    ;;

  *)

    echo $"Usage: $0 {condrestart|start|stop|restart|reload|status}"

    exit 1

esac


exit $RETVAL



# chmod 700 /etc/init.d/dovecot
# chkconfig dovecot on

# /etc/init.d/dovecot start


Posted by 소울하트
시스템/Linux2016. 3. 29. 16:50

. # yum -y install yum-priorities

 

2. 자기 시스템에 맞게 위의 rpm을 다운받는다. 다운주소  http://pkgs.repoforge.org/rpmforge-release/ 

여기서는CentOS 6 i386버전으로 설명한다.

 

--CentOS 4 버전용 rpm-------------------------------------------------------------------------------
i386 : http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el4.rf.i386.rpm

x86_64 : http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el4.rf.x86_64.rpm

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

 

--CentOS 5 버전용 rpm-------------------------------------------------------------------------------
i386 : http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm

x86_64 : http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm

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

 

--CentOS 6 버전용 rpm-------------------------------------------------------------------------------
i386 : http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm

x86_64 : http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
----------------------------------------------------------------------------------------------------

# rpm -Uvh rpmforge-release-0.5.2-2.el6.rf.i686.rpm


3. # yum -y install kernel-headers kernel-devel

 

4. # yum --enablerepo=rpmforge install fuse fuse-ntfs-3g dkms dkms-fuse


5. # fdisk -l
------------------------------------------------------------------
/dev/sda1 22193 38914 1341243543 7 HPFS/NTFS
------------------------------------------------------------------
추가로 장착한 하드의 용량과 파일타입 그리고 장치명을 확인한다. 여기서는 예로 장치명이 /dev/sda1 이다.
그리고 /mnt/windows 디렉토리에 마운트 할것이다.

 

6. # ntfs-3g /dev/sda1 /mnt/windows 

 

또는 # mount -t ntfs-3g /dev/sda1 /mnt/windows

      

 

7. # vi /etc/fstab         : 부팅시 자동으로 마운트 올리기

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

/dev/sda1 /mnt/windows ntfs-3g defaults 0 0

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

 

출처 : http://blog.naver.com/nforce7050/140141157931


Posted by 소울하트
시스템/기타2015. 6. 2. 09:34
Windows ARP 정적(static) 설정
 
C:\> arp -s 211.xxx.xxx.xxx 00-0F-FE-1A-B4-CC 

 
 
Linux arp 정적(static) 설정하기
 
# arp -v -i eth0 -s 211.xxx.xxx.xxx 00:31:6B:94:32:A8

 
---------------------------
promisc 모드 해제 
# ifconfig eth0 -promisc 

promisc 모드 가동 
# ifconfig eth0 promisc
----------------------------
 
ARP 테이블보기
 


'시스템 > 기타' 카테고리의 다른 글

메일발송 오류 http://pobox.com/~djb/docs/smtplf.html  (0) 2012.10.09
Posted by 소울하트
시스템/Linux2014. 12. 3. 10:35

VSFTP 한글 설정(UTF-8, EUCKR 포함) - CentOS 기준

 

보통 yum 으로 vsftp 를 설치시 자동으로 RPM으로 설치가 되며, 버전은 2.0.5 가 설치가 됩니다.(2014.12 기준)

 

설치 후 FTP를 이용하는데 지장은 없지만 한글 파일을 업로드 하면, 파일이름이 깨져서 다시한번 수정을 해줘야 되거나,

FTP 로그를 확인해도 ??? 와 같이 표시가 되서 어떠한 데이터를 업/다운 하였는지 확인이 안됩니다.

 

이 문제를 해결하기 위해서 vsftp 를 소스 컴파일 하였고, 문제점을 해결하였습니다.

 

우선 서버의 언어셋을 확인 합니다.

 

[root@localhost /]# echo $LANG
ko_KR.UTF-8
[root@localhost /]#

 

제 서버의 경우 언어셋은 UTF-8 입니다.

(언어셋 설정 참조 : http://mindpower.kr/53 )

 

따라서 UTF-8 기준으로 설정을 해야합니다. (물론 EUC-KR 도 본문 내용에 설명하겠습니다.)

 

다음으로 기존에 설치되어 있는 vsftpd 를 확인, 삭제합니다.

(rpm 으로 삭제시 설정파일은 자동으로 백업은 되지만 기타 chroot_list 등의 파일들은 백업이 필요합니다.)

 

[root@localhost ~]# rpm -qa | grep vsftpd
vsftpd-2.0.5-28.el5
[root@localhost ~]#

[root@localhost ~]# service vsftpd stop

[root@localhost ~]#
[root@localhost ~]# rpm -e vsftpd-2.0.5-28.el5
warning: /etc/vsftpd/vsftpd.conf saved as /etc/vsftpd/vsftpd.conf.rpmsave
[root@localhost ~]#

 

삭제 후 vsftp 를 다운 받고, 압축을 풉니다. 

(홈페이지 : https://security.appspot.com)

 

[root@localhost ~]# wget https://security.appspot.com/downloads/vsftpd-3.0.2.tar.gz

[root@localhost ~]# tar xvzf vsftpd-3.0.2.tar.gz

[root@localhost ~]# cd vsftpd-3.0.2

[root@localhost vsftpd-3.0.2]#

 

다음 각 아래의 파일들을 열어 내용을 수정해 줍니다.

 

※ 서버 설정이 EUC-KR(UTF-8 환경은 그냥 두시면 됩니다.) 환경이라면 아래의 파일을 수정해줍니다. (굵은색 표시가 주석처리 할 부분입니다.)

 

파일명 : opts.c

 

[root@localhost vsftpd-3.0.2]# vi opts.c

 

 

/*
 * Part of Very Secure FTPd
 * Licence: GPL v2
 * Author: Chris Evans
 * opts.c
 *
 * Routines to handle OPTS.
 */

#include "ftpcodes.h"
#include "ftpcmdio.h"
#include "session.h"

void
handle_opts(struct vsf_session* p_sess)
{
  str_upper(&p_sess->ftp_arg_str);
  /* if (str_equal_text(&p_sess->ftp_arg_str, "UTF8 ON"))
  {
    vsf_cmdio_write(p_sess, FTP_OPTSOK, "Always in UTF8 mode.");
  }
  else
  {
    vsf_cmdio_write(p_sess, FTP_BADOPTS, "Option not understood.");
  } */

 

파일명 : logging.c

  

[root@localhost vsftpd-3.0.2]# vi logging.c

 

(vsftpd 3.0.2 기준 171 번 라인 주석처리)

 

str_replace_unprintable(p_str, '?');   ->     /*  str_replace_unprintable(p_str, '?'); */

파일명 : postlogin.c
  

[root@localhost vsftpd-3.0.2]# vi postlogin.c


(vsftpd 3.0.2 기준 136 번 라인 주석처리)


str_replace_unprintable(&proctitle_str, '?');    ->    /* str_replace_unprintable(&proctitle_str, '?'); */


파일명 : builddefs.h
  

[root@localhost vsftpd-3.0.2]# vi builddefs.h

 

(vsftpd 3.0.2 기준 4 번 라인 수정하여 TCP_WRAPPERS 기능 활성)

 

#undef VSF_BUILD_TCPWRAPPERS    ->    #define VSF_BUILD_TCPWRAPPERS

 

※ OS가 64비트 환경이라면 아래의 파일도 수정해 줍니다.

 

파일명 : vsf_findlibs.sh

 

[root@localhost vsftpd-3.0.2]# vi vsf_findlibs.sh

 

(vsftpd 3.0.2 기준 16 번, 52번 라인 수정)

 

- 16번 라인

locate_library /lib/libpam.so.0 && echo "/lib/libpam.so.0";    ->   locate_library /lib/libpam.so.0 && echo "/lib64/libpam.so.0";

 

- 52번 라인

  echo "/lib/libcap.so.1";    ->      echo "/lib64/libcap.so.1";

 

 

man 파일이 설치될 폴더를 생성해주고 make 와 make install 을 진행합니다.

 

[root@localhost vsftpd-3.0.2]# mkdir -p /usr/local/man/man8

[root@localhost vsftpd-3.0.2]# make

[root@localhost vsftpd-3.0.2]# make install

 

그 후 아래 처럼 vsftpd 설정 파일과 서비스 실행파일, pam 파일등을 복사하고 내용을 수정합니다.

 

[root@localhost vsftpd-3.0.2]# cp vsftpd.conf /etc/vsftpd/vsftpd.conf              (/etc/vsftpd 폴더가 없을경우 만들어줍니다.)

[root@localhost vsftpd-3.0.2]# cp RedHat/vsftpd.pam /etc/pam.d/vsftpd

[root@localhost vsftpd-3.0.2]#

[root@localhost vsftpd-3.0.2]# vi /etc/pam.d/vsftpd

 

(2번째 라인의 ftpusers 파일 위치 수정)

auth       required     /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed

auth       required     /lib/security/pam_unix.so shadow nullok
auth       required     /lib/security/pam_shells.so
account    required     /lib/security/pam_unix.so
session    required     /lib/security/pam_unix.so

 

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

 

auth       required     /lib64/security/pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed

auth       required     /lib64/security/pam_unix.so shadow nullok
auth       required     /lib64/security/pam_shells.so
account    required     /lib64/security/pam_unix.so
session    required     /lib64/security/pam_unix.so

 

[root@localhost vsftpd-3.0.2]# echo "root" >  /etc/vsftpd/ftpusers               (root 와 같은 시스템권한의 유저는 로그인을 불가하도록 추가합니다.)

[root@localhost vsftpd-3.0.2]# chmod 600 /etc/vsftpd/*

[root@localhost vsftpd-3.0.2]# touch /etc/init.d/vsftpd 

[root@localhost vsftpd-3.0.2]# chmod 755 /etc/init.d/vsftpd

 

서비스 실행파일에 내용을 추가해줍니다.

 

[root@localhost vsftpd-3.0.2]# vi /etc/init.d/vsftpd

 

 

 

 

#!/bin/bash
#
# vsftpd      This shell script takes care of starting and stopping
#             standalone vsftpd.
#
# chkconfig: - 60 50
# description: Vsftpd is a ftp daemon, which is the program \
#              that answers incoming ftp service requests.
# processname: vsftpd
# config: /etc/vsftpd/vsftpd.conf
# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

[ -x /usr/local/sbin/vsftpd ] || exit 0

RETVAL=0
prog="vsftpd"

start() {
        # Start daemons.

        if [ -d /etc/vsftpd ] ; then
                for i in `ls /etc/vsftpd/*.conf`; do
                        site=`basename $i .conf`
                        echo -n $"Starting $prog for $site: "
                        /usr/local/sbin/vsftpd $i &
                        RETVAL=$?
                        [ $RETVAL -eq 0 ] && {
                           touch /var/lock/subsys/$prog
                           success $"$prog $site"
                        }
                        echo
                done
        else
                RETVAL=1
        fi
        return $RETVAL
}

stop() {
        # Stop daemons.
        echo -n $"Shutting down $prog: "
        killproc $prog
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
        return $RETVAL
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart|reload)
        stop
        start
        RETVAL=$?
        ;;
  condrestart)
        if [ -f /var/lock/subsys/$prog ]; then
            stop
            start
            RETVAL=$?
        fi
        ;;
  status)
        status $prog
        RETVAL=$?
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
        exit 1
esac

exit $RETVAL

 

 

 

[root@localhost vsftpd-3.0.2]# chkconfig vsftpd on                (자동 실행 되도록 합니다.)

 

아래는 vsftpd.conf 의 파일입니다.

(임의로 필요한 옵션들만 정리해서 수정하였습니다.)

 

[root@localhost vsftpd-3.0.2]# vi /etc/vsftpd/vsftpd.conf

 

 

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=NO
data_connection_timeout=120
chroot_local_user=YES
allow_writeable_chroot=YES
listen=YES

pam_service_name=vsftpd
tcp_wrappers=YES

max_clients=20
max_per_ip=5
local_max_rate=10000000
use_localtime=YES
connect_timeout=600
accept_timeout=60
ftp_data_port=20
listen_port=21000
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
file_open_mode=0644
async_abor_enable=NO

dirlist_enable=YES
session_support=YES

 

 

 

이제 서비스를 시작하고 접속하여 한글파일이 깨지는지 로그에서 정상적으로 출력되는지 확인합니다.

(iptables 과 같은 방화벽에 FTP listen 포트를 허용하는건 기본입니다. 위에 설정한 passive 모드 포트 포함)

 

[root@localhost vsftpd-3.0.2]# service vsftpd start
vsftpd에 대한 vsftpd을 시작 중:                            [  OK  ]
[root@localhost vsftpd-3.0.2]#

 

[root@localhost vsftpd-3.0.2]# tail --f /var/log/vsftpd.log

Wed Dec  3 10:28:24 2014 [pid 14163] [webadmin] OK MKDIR: Client "192.168.0.222", "/새 폴더"

Wed Dec  3 10:28:25 2014 [pid 14163] [webadmin] OK MKDIR: Client "192.168.0.222", "/새 폴더1"

 

※ 위와 같이 정상적으로소스컴파일 하고 했음에도 로그파일에 한글이 정상적으료 표현되지 않는다면, 로그파일의 인코딩이 EUCKR 이라 그럴수 있습니다.

    아래처럼 인코딩을 변경해 주면 정상적으로 확인이 가능합니다.

 

[root@localhost vsftpd-3.0.2]# mv vsftpd.log vsftpd.log.bak

[root@localhost vsftpd-3.0.2]# iconv -c -f euckr -t utf8 vsftpd.log.bak > vsftpd.log

 

 

 

 

 

 

Posted by 소울하트
시스템/Shell Script2014. 10. 23. 14:23

정규표현식 이란?

 

 

정규표현식이란 간단하게 이야기해서 검색에서 사용할 매칭되는 같은 문자들의 패턴을 뜻합니다.

 

또한 정규표현식은 모든 언어(jsp,php,asp,javascript,perl 등등)에서 사용이 되며, 사용법에는 큰 차이는 없습니다.

 

 

우선 Shell Script 에서 사용되는 정규표현식에 대하여 알아보겠습니다.

정규표현식에서는 문자 그대로의 의미 이상으로 해석되는 메타문자 라고 부르는 문자들의 집합을 사용합니다.

 

 

연산자

내용

.

newline을 제외한 오직 하나의 문자와 일치합니다.
(예 : "1..e" 정규표현식은 1을 포함하고 두개의 문자 다음에 e가 나오는 라인을 의미합니다.

?

자신 앞에 나오는 정규표현식이 0개 이거나 1개인 것과 일치하고 대부분 하나의 문자와
매칭할 때 사용합니다.

*

바로 앞의 문자열이나 정규표현식에서 0개 이상 반복되는 문자를 의미합니다.

+

자신 앞에 나오는 하나 이상의 정규표현식과 일치합니다. * 와 비슷하게 동작하지만
반드시 하나 이상과 일치합니다.

{N}

정확히 N번 일치 합니다.

{N,}

N번 또는 그 이상 일치합니다.

{N,M}

적어도 N번 일치하지만 M번 일치를 넘지 않습니다.

-

목록에서 처음과 마지막을 제외한 범위를 의미하거나 목로의 마지막 지점을 의미합닏.

^

라인의 시작에서의 공백 문자열을 의미합니다. 또한 목록의 범위에 없는 문자들을 의미합니다.
(예: ^linux 는 linux 문자열로 시작하는 모든 라인을 의미합니다.)

$

라인 마지막에서의 공백 문자열을 의미합니다.
(예 : linux$ 는 linux 로 끝나는 모든 라인을 의미합니다.)

^$

빈 줄과 일치합니다.

[…]

대괄호는 단일 정규표현식에서 문자들을 집합으로 묶어줍니다.
예:
[xyz] : x, y, z 중 한 문자와 일치합니다.
[c-n] : c에서 n  사이에 속하는 한 문자와 일치합니다.
[B-Pk-y] : B에서 P까지 또는 k에서 y까지의 한 글자와 일치합니다.
[a-z0-9] : 소문자나 숫자 중 한 문자와 일치합니다.
[^b-d] : b 에서 d 사이의 문자를 제외한 모든 문자를 나타냅니다.
           또한 ^ 는 바로 뒤에 나오는 정규표현식의 의미를 반대로 해석하도록 합니다.

\

특수문자를 원래의 문자 의미대로 해석합니다.
예 : \$ : $ 문자 그대로 해석합니다.

\b

단어 끝의 공백 문자열을 의미합니다.

\B

단어 끝이 아닌 곳에서의 공백 문자열을 의미합니다.

\<

단어 시작에서의 공백 문자열을 의미합니다.
예 : \<linux    : linux 문자열로 시작되는 단어를 포함하고 있는 라인

\>

단어 끝에서의 공백 문자열을 의미합니다.
예 : linux \>   : linux 문자열로 끝나는 단어를 포함하고 있는 라인

 

 

 

 

아래의 내용은 정규표현식에서 사용하는 확장된 메타문자(브래킷) 입니다.

 

브래킷

내용

[:alnum:]

[A-Za-z0-9] 처럼 알파멧 문자와 숫자로 이루어진 문자열 입니다.

[:alpha:]

[A-Za-z] 과 동일한 알파벳 문자를 의미합니다.

[:blank:]

[ \x09] 스페이스와 탭을 의미합니다.

[:cntrl:]

컨트롤 제어 문자를 의미합니다.

[:digit:]

[0-9] 숫자를 의미합니다.

[:graph:]

[!-~] 공백이 아닌 문자를 의미합니다.(스페이스, 제어문자들은 제외)

[:lower:]

[a-z] 소문자

[:print:]

[ -~] [:graph:]와 비슷하지만 스페이스 문자를 포함합니다.

[:punct:]

[!-\:-@[-'{-~] 문장 부호 문자

[:space:]

[ \t\v\f] 모든 공백 문자(newline 줄바꿈, 스페이스, 탭)

[:upper:]

[A-Z] 대문자

[:xdigit:]

[0-9a-fA-F] 16진수에서 사용할 수 있는 숫자

 

 

예제)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'시스템 > Shell Script' 카테고리의 다른 글

date 명령어로 날짜,시간 계산하기  (0) 2013.05.23
Posted by 소울하트
시스템2014. 4. 24. 12:54

iconv 사용법!
웹페이지를 이전할 때나 mysql 데이터 이전시 character set 문제로 고생을 할 때가 있습니다.

예를 들자면 이전할 서버는 euckr 인데.. 웹소스 데이터가 utf8 로 되어있다던가,
database 가 rpm 이나 yum 으로 설치하면 기본 언어셋팅이 latin1 로 되기에 이전시 문제가
이전 대상 서버의 언어설정과 맞지 않아 어려움이 생길수 있습니다. 

이에

iconv 로 데이터파일의 언어설정을 바꿀수 있습니다.

iconv -c -f euckr -t utf8  test_euckr.sql > test_utf8.sql

위와 같은 형식으로 변경이 가능합니다. -f 는 기존의 언어셋을 -t 는 변경할 언어셋을 설정해 주면 됩니다.

위에선 예제로 euckr 과 utf8 을 적어놨습니다. 하지만 iconv 의 지원언어는 엄청납니다.!

iconv -l  을 하게되면 지원가능한 언어가 좌르륵 나옵니다. 다만 변환을 위해서 기존언어가 어떤언어인지
확인이 필요하겠죠..(확인하기가 제일 어려움..ㅜㅜ)

아래는 iconv 의 자세한 내용 입니다.

# iconv --help
사용법: iconv[<옵션>...] [<파일>...]
주어진 파일의 인코딩을 한 인코딩에서 또 다른 인코딩으로 변환함.

입/출력 형식 지정:
  -f, --from-code=<이름>     원 문서 인코딩
  -t, --to-code=<이름>       출력 인코딩

정보:
  -l, --list                 알려진 모든 문자셋 코드를 열거함

출력 조정:
  -c                         출력에서 잘못된 문자를 제외합니다
  -o, --output=FILE          출력 파일
  -s, --silent               경고를 표시하지 않습니다
      --verbose              진행 정보를 표시
  -?, --help                 이 도움말 리스트를 표시함
      --usage                간략한 사용법 메세지를 표시함
  -V, --version              프로그램 버전 표시

iconv 로 다수의 파일을 인코딩 변경 하는 스크립트는 http://mindpower.kr/22 <- 여기에서^^

질문사항이 있으면 댓글 남겨주세요 ㅎㅎ 
Posted by 소울하트
시스템/Linux2013. 12. 20. 08:35

안녕하세요.

 

리눅스 설치 후 콘솔작업 할때에는 문제가 없으나, SSH접속프로그램인 Putty 나 SecurCRT 등을 사용할때에

화면 및 한글깨짐으로 작업에 어려움이 발생할 수 있습니다.

(한글설정 이 되지않아 불편할 때가 많죠.)

 

또한 일본식 한자나 한문 같은 경우에도 정확하게 표현해 주지 못할 경우에 UTF-8 유니코드 가 사용됩니다.

 

UTF-8 은 가변길이 인자 인코딩 방식으로 1비트부터 4비트까지 가변적으로 바뀌기에 모든 외국어 및 한글을

표현하기에 시스템의 언어설정은 UTF-8로 하시길 권장드립니다.

(EUC-KR 의 경우 8비트 인코딩 방식으로 한글만 표현하기에는 적합합니다.)

 

그럼 우선 시스템에 UTF-8 설정하는 방법입니다.

 

아래의 방법처럼 /etc/sysconfig/i18n 이 파일에 UTF-8 관련 내용을 추가합니다.

/etc/sysconfig/i18n 파일이 리눅스의 언어설정 파일입니다.(한글설정 포함)

 

vi 편집기로 /etc/sysconfig/i18n 파일을 수정해줍니다.

개발된 웹소스의 언어 설정에 따라 맞는 설정을 사용하시면 될듯합니다. vi 로 리눅스 Shell 상에서 보기 위해서 입니다.

보통 UTF-8 로 저장된 문서를 시스템의 LANG 설정이 맞지 않으면 꺠져서 보이기에 Shell 에서 작업할때에

알아보기가 힘듭니다..

 

#UTF-8 설정 시

 

vi ⁄etc⁄sysconfig⁄i18n
LANG="ko_KR.UTF-8"
SUPPORTED="en_US.UTF-8:en_US:en:ko_KR.UTF-8:ko_KR:ko"
SYSFONT="latarcyrheb-sun16"
SYSFONTACM="8859-15"
vi ⁄etc⁄profile
export LC_ALL="ko_KR.UTF-8"
export LANG="ko_KR.UTF-8"

 

 


#EUC-KR 설정 시

LANG="ko_KR.EUC-KR"
SUPPORTED="en_US.UTF-8:en_US:en:ko_KR.UTF-8:ko_KR:ko"
SYSFONT="latarcyrheb-sun16"

 

위처럼 작업 후 쉘에서 source 명령으로 /etc/sysconfig/i18n 파일과 /etc/profile 파일을 적용해 주면 됩니다.

source ⁄etc⁄sysconfig⁄i18n
source ⁄etc⁄profile 


마지막으로 어떤파일은 euckr 로 저장이 되고, 어떤파일은 utf8 로 저장이 되었을때 iconv 로 변환해서 보면 되지만

일일이 작업하려면 매우 번거롭습니다..

 

그럴 경우 SSH 로 접속한 계정의 홈디렉토리 아래에 .vimrc 파일을 생성 후 vi 옵션을 설정해 주면

utf8 과 euckr 을 동시에 사용할 수 있습니다.

 

cd ~ 
vi .vimrc


#아래내용 추가

set ts=4
set fileencodings=utf-8,euc-kr

추가 후 재 로그인 하면 로그인 시 .vimrc 파일을 불러오면서 적용이 됩니다.

 

 

▽도움이 되셨다면 아래의 손가락광고배너 한번 클릭해주는 센스 감사^^

Posted by 소울하트
시스템/Linux2013. 11. 15. 18:07

php 5.2.1 make 시 mysqli 오류가 발생할 수 있습니다.

 

 

⁄usr⁄local⁄php⁄ext⁄mysqli⁄mysqli.c: In function 'zm_startup_mysqli':
⁄usr⁄local⁄php⁄ext⁄mysqli⁄mysqli.c:625: error: 'MYSQL_RPL_MASTER' undeclared (first use in this function)
⁄usr⁄local⁄php⁄ext⁄mysqli⁄mysqli.c:625: error: (Each undeclared identifier is reported only once
⁄usr⁄local⁄php⁄ext⁄mysqli⁄mysqli.c:625: error: for each function it appears in.)
⁄usr⁄local⁄php⁄ext⁄mysqli⁄mysqli.c:626: error: 'MYSQL_RPL_SLAVE' undeclared (first use in this function)
⁄usr⁄local⁄php⁄ext⁄mysqli⁄mysqli.c:627: error: 'MYSQL_RPL_ADMIN' undeclared (first use in this function)
make: *** [ext⁄mysqli⁄mysqli.lo] 오류 1

 

그럴경우 mysql.h 파일을 find 로 찾아서 enum mysql_protocol_type 밑에 아래처럼 추가합니다.

enum mysql_protocol_type
{
MYSQL_PROTOCOL_DEFAULT, MYSQL_PROTOCOL_TCP, MYSQL_PROTOCOL_SOCKET,
MYSQL_PROTOCOL_PIPE, MYSQL_PROTOCOL_MEMORY
};


enum mysql_rpl_type
{
MYSQL_RPL_MASTER, MYSQL_RPL_SLAVE, MYSQL_RPL_ADMIN
};

 

enum mysql_rpl_type 저 내용을 추가해 주면 됩니다.

 

저 같은 경우는 mysql.h 파일이 /usr/local/mysql/include/mysql.h 여기에 있군요.

추가후에 다시 make 하면 잘 되는군요.ㅎㅎ

Posted by 소울하트
시스템/Linux2013. 11. 7. 19:17

요즘 워드프레스로 홈페이지를 구축하고 이용하는것이 많이 보편화 되었는데요,

 

구글플러스에서 글 등록할때 포스트를 보낼때 curl 을 사용합니다.

 

curl 을 사용했을때 https 로 접근시 오류가 발생할 때가 있습니다.

 

저 같은 경우는 지메일에서 받은편지함을 불러올때 오류가 나더군요..

 

error setting certificate verify locations:
  CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none

 

위와 같은 오류가 나와서 구글링과 별의 별 작업을 해본결과.. 허무하게 /etc/pki/tls/certs/ca-bundle.crt 이 파일에 대해서 일반유저 읽기 권한이 없는것을

확인!! 황당함과 동시에 권한을 주니 문제가 없더라구요.ㅜㅜ

 

 

$cURL = curl_init(); ⁄⁄ cURL 초기화
curl_setopt($cURL, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($cURL, CURLOPT_USERPWD, "지메일 아이디:비밀번호");
curl_setopt($cURL, CURLOPT_SSLVERSION, 3);
curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($cURL, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($cURL, CURLOPT_URL, "https:⁄⁄mail.google.com⁄mail⁄feed⁄atom");
$chResult = curl_exec($cURL); ⁄⁄ cURL 실행 
curl_close($cURL); ⁄⁄ cURL 종료
echo $chResult; 

 

 

 

 

Posted by 소울하트
시스템/Linux2013. 10. 24. 22:43

 

 

./configure

 

하기 전에

 

export CFLAGS="-fPIC"
export CC="gcc"

 

또는

 

export CC="gcc -m64 -fPIC"
export CXX="g++ -m64 -fPIC"
export F77="g77 -m64 -fPIC"
export FC="g77 -m64 -fPIC"

 

입력후  설치

Posted by 소울하트
시스템/Linux2013. 5. 31. 15:23

Linux Streaming Red5 Setup

(리눅스 스트리밍 Red5 설치)

 

오늘은 리눅스에서도 스트리밍을 할 수 있는 Red5 설치에 대해 포스팅 하고자 합니다.

 

Red5 는 오픈소스 이며, 자바로 개발이 되고 있습니다.

 

공식사이트(http://www.red5.org)에서 다운로드나 자세한 정보를 얻을 수 있습니다.

 

테스트를 위하여 CentOS 5.8 (32bit) 에서 진행하였습니다.

 

- JAVA 설치

 : Red5는 자바로 개발이 되고 있기에 우선 자바를 설치 합니다.(http://www.oarcle.com 에서 다운)

   저는 jdk-7u17-linux-i586.tar.gz 를 설치하였습니다.

   (wget 으로 다운이 안되어 별도의 FTP 서버에 파일을 업로드 후 서버에서 다운받았습니다.)

 

[root@b ⁄]# cd ⁄usr⁄local⁄
[root@b local]# ls -al jdk-7u17-linux-i586.tar.gz
-rw-r--r-- 1 root root 97488905 Apr  9  2013 jdk-7u17-linux-i586.tar.gz
[root@b local]# tar xvzf jdk-7u17-linux-i586.tar.gz 
[root@b local]# mv jdk1.7.0_17⁄ jdk1.7
[root@b local]# echo 'export JAVA_HOME=⁄usr⁄local⁄jdk1.7' >> ⁄etc⁄profile
[root@b local]# echo 'export PATH=$PATH:$JAVA_HOME⁄bin' >> ⁄etc⁄profile
[root@b local]# echo 'export CLASSPATH="."' >> ⁄etc⁄profile
[root@b local]# source ⁄etc⁄profile
[root@b local]# java -version
java version "1.7.0_17"
Java(TM) SE Runtime Environment (build 1.7.0_17-b02)
Java HotSpot(TM) Client VM (build 23.7-b01, mixed mode)

 

 

- Apache ant 설치

: apache ant 는 make 와 같은 build용 도구 이며, red5 0.9버전 이하는 ant 로 build를 해야하기때문에 설치가 필요합니다.

  하지만 red5 1.0 부터는 ant 로 build를 할 필요가 없기에 0.9 이하의 버전을 설치한다면 ant 를 설치해야 합니다.

  전 1.0.1 최신버전을 설치하도록 하겠습니다.

  (red5 1.0 이상의 버전을 설치하려면 ant 설치는 무시하셔도 됩니다.)

 

 - http://ant.apache.org/bindownload.cgi   <- Apache Ant Project 홈페이지

 

[root@b ~]# wget http://apache.mirror.cdnetworks.com//ant/binaries/apache-ant-1.9.0-bin.tar.gz

[root@b ~]# tar xvzf apache-ant-1.9.0-bin.tar.gz

[root@b ~]# mv apache-ant-1.9.0 /usr/local/ant

[root@b ~]# echo 'export ANT_HOME=/usr/local/ant' >> /etc/profile
[root@b ~]# echo 'export PATH=$PATH:$ANT_HOME/bin' >> /etc/profile

[root@b ~]# source /etc/profile

[root@b ~]# ant -v
Apache Ant(TM) version 1.9.0 compiled on March 5 2013
Trying the default build file: build.xml
Buildfile: build.xml does not exist!
Build failed

 

 

- RED5 설치

 : RED5 0.9 이하버전은 ant 로 빌드를 새로 해줘야 합니다. 하지만 1.0 이상 버전은 별도로 빌드를 할 필요가 없습니다.

   RED5 0.9 이하버전을 설치하신다면 아래 1번의 방법으로 설치를 하시고, 1.0 이상인 경우 2번의 방법으로 진행하면 됩니다.

  

   RED5 공식 사이트 > http://www.red5.org

 

1번

[root@b ~] # cd /usr/local
[root@b local] # yum install subversion
[root@b local] # svn co http://red5.googlecode.com/svn/java/server/trunk red5
[root@b local] # cd /usr/local/red5/
[root@b red5] # ant prepare
[root@b red5] # ant build

 ※ ant build 오류 발생시

[root@b red5] # ant

 또는

[root@b red5] # ant -f build.xml

[root@b local]# cd red5/dist/conf/

[root@b conf]# vi red5.properties (host ip 를 수정합니다.)

 또는 find 명령으로 한번에 수정
[root@b conf]# find . -name red5.properties -exec vi "-c" "%s/host=0.0.0.0/host=192.168.146.130/g" "-c" "wq" {} \;

[root@b red5] # ./red5.sh &            (백그라운드로 실행시켜줘야 합니다.)

2번

[root@b local]# wget http://red5.org/downloads/red5/1_0_1/red5-1.0.1.tar.gz
[root@b local]# tar xvzf red5-1.0.1.tar.gz

[root@b local]# mv red5-server-1.0 red5

[root@b local]# cd red5/conf/
[root@b conf]# vi red5.properties                    (host ip 를 수정합니다.)

 또는 find 명령으로 한번에 수정
[root@b conf]# find . -name red5.properties -exec vi "-c" "%s/host=0.0.0.0/host=192.168.146.130/g" "-c" "wq" {} \;

 

- RED5 INIT Script 생성

 : ./red5.sh & 명령으로 백그라운드로 실행시켜도 되지만 좀 더 편하게 관리하고자 INIT Script 를 생성합니다.

 

본 포스팅에 첨부된 파일(red5.txt)을 받아 아래의 파일에 복사&붙여넣기 합니다.

 

 

red5.txt  <- 이파일

(파일 내용중 RED5_HOME 라는 부분을 실제 설치 경로로 적어주시면 됩니다.)

 

[root@b conf]# vi /etc/init.d/red5

[root@b conf]# chmod 755 /etc/init.d/red5

[root@b conf]# chkconfig --add red5
[root@b conf]# chkconfig red5 on
[root@b conf]# /etc/init.d/red5 start
Starting red5:                                             [  OK  ]
[root@b conf]# /etc/init.d/red5 stop
Shutting down red5:                                        [  OK  ]

[root@b conf]# /etc/init.d/red5 start
Starting red5:                                             [  OK  ]

[root@b conf]# service red5 restart

  혹 위 service 명령으로 red5 서비스 컨트롤이 안될경우

[root@b conf]# echo "#RED5 Start" >> /etc/rc.local
[root@b conf]# echo "/etc/init.d/red5 start" >> /etc/rc.local

 

- RED5 방화벽 허용

: 외부 서비스 및 테스트를 위하여 방화벽에서 Red5 서비스 포트를 오픈합니다.

 (OPEN Port : 1935, 1936, 3690, 5080, 8088 )

 

[root@b conf]# vi /etc/sysconfig/iptables

 

아래 내용 추가

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1935 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1936 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5080 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8088 -j ACCEPT

 

[root@b conf]# service iptables restart

 

- RED5 테스트를 위하여 관리페이지 접속

 : http://192.168.146.130:5080 접속

 : 하단의 Install 클릭 하여 데모 설치

 

 

 : 3개 전부 Install 을 클릭하여 설치합니다.  

 

- JW Player 에서 확인

 2. Choose a preset 에서 “RTMP Stream” 클릭
 3. 하단 File 입력란에 스트리밍주소 입력
  (예 : rtmp://192.168.146.130/oflaDemo/미디어파일.flv )
 4. 화면을 클릭하여 재생 테스트

  ※ RED5 를 설치한 서버의 IP 가 사설IP 인 경우 JW Player 에서 접근을 할 수 없기에 재생이 불가능합니다. 

 

 

▽도움이 되셨다면 아래의 손가락광고배너 한번 클릭해주는 센스 감사^^

 

Posted by 소울하트
시스템/Linux2013. 5. 24. 10:05

안녕하세요.

 

오늘은.. Fedora Core5 Yum 되는 사이트 입니다.

오랜만에 회사에서 운영하는 이전 장비에 RPM 을 설치하다보니 YUM 이 말썽을 일으키는군요..

 

상당히 오래된 OS 버전이기도 하고 OS를 재설치 하자니.. 당장 급하게 처리해야되고..

 

그래서 찾은 2013/05/24 현재 Fedora core5 에서 yum 이 잘되는 사이트와 설정파일 정보를 올려봅니다.

 

vi /etc/yum.repos.d/fedora-파일명 에 수정하면 됩니다.

=================

fedora-core.repo
-----------------
[core]
name=Fedora Core $releasever - $basearch
#baseurl=http:⁄⁄download.fedora.redhat.com⁄pub⁄fedora⁄linux⁄core⁄$releasever⁄$basearch⁄os⁄
baseurl=http:⁄⁄ftp.riken.jp⁄Linux⁄fedora⁄core⁄5⁄i386⁄os
mirrorlist=http:⁄⁄ftp.kaist.ac.kr⁄pub⁄fedora⁄linux⁄core⁄$releasesever⁄$basearch⁄os
mirrorlist=http:⁄⁄fedora.redhat.com⁄download⁄mirrors⁄fedora-core-$releasever
enabled=1
gpgcheck=1
gpgkey=file:⁄⁄⁄etc⁄pki⁄rpm-gpg⁄RPM-GPG-KEY-fedora file:⁄⁄⁄etc⁄pki⁄rpm-gpg⁄RPM-GPG-KEY


[core-debuginfo]
name=Fedora Core $releasever - $basearch - Debug
baseurl=http:⁄⁄download.fedora.redhat.com⁄pub⁄fedora⁄linux⁄core⁄$releasever⁄$basearch⁄debug⁄
enabled=0
gpgcheck=1
gpgkey=file:⁄⁄⁄etc⁄pki⁄rpm-gpg⁄RPM-GPG-KEY-fedora file:⁄⁄⁄etc⁄pki⁄rpm-gpg⁄RPM-GPG-KEY

[core-source]
name=Fedora Core $releasever - Source
baseurl=http:⁄⁄download.fedora.redhat.com⁄pub⁄fedora⁄linux⁄core⁄$releasever⁄source⁄SRPMS⁄
enabled=0
gpgcheck=1
gpgkey=file:⁄⁄⁄etc⁄pki⁄rpm-gpg⁄RPM-GPG-KEY-fedora file:⁄⁄⁄etc⁄pki⁄rpm-gpg⁄RPM-GPG-KEY




===================
fedora-updates.repo
-------------------
[updates]
name=Fedora Core $releasever - $basearch - Updates
#baseurl=http:⁄⁄download.fedora.redhat.com⁄pub⁄fedora⁄linux⁄core⁄updates⁄$releasever⁄$basearch⁄
baseurl=http:⁄⁄ftp.riken.jp⁄Linux⁄fedora⁄core⁄updates⁄5⁄i386⁄
mirrorlist=http:⁄⁄ftp.kaist.ac.kr⁄pub⁄fedora⁄linux⁄core⁄updates⁄$releasesever⁄$basearch
mirrorlist=http:⁄⁄fedora.redhat.com⁄download⁄mirrors⁄updates-released-fc$releasever
enabled=1
gpgcheck=1
gpgkey=file:⁄⁄⁄etc⁄pki⁄rpm-gpg⁄RPM-GPG-KEY-fedora


[updates-debuginfo]
name=Fedora Core $releasever - $basearch - Updates - Debug
baseurl=http:⁄⁄download.fedora.redhat.com⁄pub⁄fedora⁄linux⁄core⁄updates⁄$releasever⁄$basearch⁄debug⁄
enabled=0
gpgcheck=1
gpgkey=file:⁄⁄⁄etc⁄pki⁄rpm-gpg⁄RPM-GPG-KEY-fedora


[updates-source]
name=Fedora Core $releasever - Updates Source
baseurl=http:⁄⁄download.fedora.redhat.com⁄pub⁄fedora⁄linux⁄core⁄updates⁄$releasever⁄SRPMS⁄
enabled=0
gpgcheck=1
gpgkey=file:⁄⁄⁄etc⁄pki⁄rpm-gpg⁄RPM-GPG-KEY-fedora


=================
fedora-extra.repo
-----------------
[extras]
name=Fedora Extras $releasever - $basearch
#baseurl=http:⁄⁄download.fedora.redhat.com⁄pub⁄fedora⁄linux⁄extras⁄$releasever⁄$basearch⁄
baseurl=http:⁄⁄ftp.riken.jp⁄Linux⁄fedora⁄extras⁄5⁄i386⁄
mirrorlist=http:⁄⁄ftp.kaist.ac.kr⁄pub⁄fedora⁄linux⁄core⁄updates⁄fedora-extras-$releasesever
mirrorlist=http:⁄⁄fedora.redhat.com⁄download⁄mirrors⁄fedora-extras-$releasever
enabled=1
gpgkey=file:⁄⁄⁄etc⁄pki⁄rpm-gpg⁄RPM-GPG-KEY-fedora-extras
gpgcheck=1


[extras-debuginfo]
name=Fedora Extras $releasever - $basearch - Debug
baseurl=http:⁄⁄download.fedora.redhat.com⁄pub⁄fedora⁄linux⁄extras⁄$releasever⁄$basearch⁄debug⁄
enabled=0
gpgkey=file:⁄⁄⁄etc⁄pki⁄rpm-gpg⁄RPM-GPG-KEY-fedora-extras
gpgcheck=1


[extras-source]
name=Fedora Extras $releasever - Source
baseurl=http:⁄⁄download.fedora.redhat.com⁄pub⁄fedora⁄linux⁄extras⁄$releasever⁄SRPMS⁄
enabled=0
gpgkey=file:⁄⁄⁄etc⁄pki⁄rpm-gpg⁄RPM-GPG-KEY-fedora-extras
gpgcheck=1

▽도움이 되셨다면 아래의 손가락광고배너 한번 클릭해주는 센스는 매우 감사ㅠ_ㅠ
Posted by 소울하트
시스템/Shell Script2013. 5. 23. 10:43

리눅스에서 date 명령어로 날짜 와 시간을 계산할 수 있습니다.

 

과거 시간
 
date -d '1 day ago'                       # 1일전

date -d '25 day ago'                      # 25일전

date -d '100 day ago'                    # 100일전

date -d '1 week ago'                     # 1주일전

date -d '2 month ago'                   # 1달전

date -d '3 year ago'                      # 3년전

date -d '10 second ago'                # 10초전

date -d '20 minute ago'                 # 20분전

date -d '30 hour ago'                    # 30시간전

date -d '3 year 7 month ago'          # 3년 7개월전

 

 

미래 시간
* 과거에서 ago 를 빼면 됨

 

date -d '1 day'                                    # 1일후 = 내일

date -d '25 day'                                   # 20일후

date -d '100 day'                                   # 20일후

date -d '1 week'                                  # 1주일후

date -d '3 month'                                 # 3달후

date -d '5 year'                                   # 5년후

date -d '10 second'                             # 10초후

date -d '20 minute'                               # 20분후

date -d '25 hour'                                  # 25시간후

date -d '5 year 8 month 10 day'              # 5년 8개월 10일 후


 

요일 기준

 

date -d 'this friday'                  # 이번주 금요일

date -d 'last monday'               # 지난 월요일

date -d 'next tuesday'             # 다음 화요일

 


특정 시간을 기준으로 날짜 더하고 빼기

 

date -d '2010-01-03 07:32:10 + 2 day 5 hours 17 minute'                 # 2010년 1월 3일 7시 32분 10초를 기준으로 2일 5시간 17분후


 

date 옵션 1

-d 는 --date 옵션으로 사용해도 됩니다. --date 로 쓸때에는 --date= 형식으로 사용하시면 됩니다.

 

date --date='2 month'


 

date 옵션 2

시간단위를 나타내는 day, week, month, year, second, minute, hour 등은 뒤에 s(복수)를 붙여도 되고 안붙여도 됩니다.

 

date -d '1 day ago'date -d '1 days ago'


 

date 옵션 3

시간을 원하는 형식으로 뽑기위해서는 아래같이 하시면 됩니다.

현재 시간으로부터 2일전의 년-월-일 시:분:초 형식으로 표시하려면

 

date '+%Y-%m-%d %H:%M:%S' -d '2 day ago'


 

'시스템 > Shell Script' 카테고리의 다른 글

Shell 에서의 정규표현식  (0) 2014.10.23
Posted by 소울하트
시스템/Linux2013. 5. 14. 11:32

 

불필요한 SNMP 로그 삭제

 

SNMP 를 설정시 /var/log/messages 에 아래와 snmp 관련 로그가 남습니다.

하지만 로그가 꾸준히 남기에.. 크게 효율은 없다고 생각됩니다.

May 13 16:45:34 mindpower.kr snmpd[25607]: Connection from UDP: [192.168.0.20]:42509 May 13 16:45:34 mindpower.kr snmpd[25607]: Received SNMP packet(s) from UDP: [192.168.0.20]:42509 May 13 16:45:34 mindpower.kr snmpd[25607]: Connection from UDP: [192.168.0.20]:40426 May 13 16:45:34 mindpower.kr snmpd[25607]: Received SNMP packet(s) from UDP: [192.168.0.20]:40426 May 13 16:45:34 mindpower.kr snmpd[25607]: Connection from UDP: [222.231.47.36]:48124 May 13 16:45:34 mindpower.kr snmpd[25607]: Received SNMP packet(s) from UDP: [192.168.0.20]:48124 May 13 16:45:34 mindpower.kr snmpd[25607]: Connection from UDP: [192.168.0.20]:37321 May 13 16:45:34 mindpower.kr snmpd[25607]: Received SNMP packet(s) from UDP: [192.168.0.20]:37321

 

 

위 로그가 더이상 남지 않게 하기 위해서는 snmpd 프로세스 실행 스크립트를 약간 수정해주면 됩니다.

 

[root@b ~]# vi ⁄etc⁄init.d⁄snmpd

#!⁄bin⁄bash
# ucd-snmp init file for snmpd
#
# chkconfig: - 50 50
# description: Simple Network Management Protocol (SNMP) Daemon
#
# processname: ⁄usr⁄sbin⁄snmpd
# config: ⁄etc⁄snmp⁄snmpd.conf
# config: ⁄usr⁄share⁄snmp⁄snmpd.conf
# pidfile: ⁄var⁄run⁄snmpd

# source function library
. ⁄etc⁄init.d⁄functions

OPTIONS="-Lsd -Lf ⁄dev⁄null -p ⁄var⁄run⁄snmpd.pid -a"
if [ -e ⁄etc⁄sysconfig⁄snmpd.options ]; then
  . ⁄etc⁄sysconfig⁄snmpd.options
fi

RETVAL=0
prog="snmpd"

start() {
        echo -n $"Starting $prog: "
        if [ $UID -ne 0 ]; then
                RETVAL=1
                failure
        else
                daemon ⁄usr⁄sbin⁄snmpd $OPTIONS
                RETVAL=$?
                [ $RETVAL -eq 0 ] && touch ⁄var⁄lock⁄subsys⁄snmpd
        fi;
        echo
        return $RETVAL
}
………… 중략 …………

위 에서 5번째 라인의 OPTIONS="-Lsd -Lf ⁄dev⁄null -p ⁄var⁄run⁄snmpd.pid -a" 부분을 아래처럼 수정해 주면 됩니다.

 

 

OPTIONS="-LS 2 d -Lf ⁄dev⁄null -p ⁄var⁄run⁄snmpd.pid -a"

 

그리고 서비스 재시작 하면 더이상 로그는 쌓이지 않게 됩니다.

이상입니다.^^

 

▽도움이 되셨다면 아래의 손가락광고배너 한번 클릭해주는 센스는 매우 감사ㅠ_ㅠ

Posted by 소울하트
시스템/Linux2013. 3. 13. 09:40

리눅스에서 윈도우 공유폴더 Mount

 

오늘은 윈도우에서 공유한 폴더를 리눅스에서 mount 하는 방법을 포스팅 하겠습니다.

 

리눅스에서 윈도우 공유폴더 Mount 하기 위해서는 당연한 이야기 이지만 두 서버간 방화벽등의 보안장비에서 공유포트 또는

 IP단위로 허용이 되어있어야 합니다.

 

1. Windows 공유(WindowsServer2008)

 - 리눅스에서 윈도우 폴더를 Mount 하기 위하여 Windows서버에 공유를 추가합니다.

   (제 서버는 Windows Server 2008 입니다.)

 

 

- 기본으로 Administrator 계정이 설정되지만 로컬에 있는 다른 계정을 추가하여 소유자로 설정할 수 있습니다.

 

 

- 권한은 사용 목적에 따라서 설정합니다. (전 테스트용으로 모든 권한 허용)

 

 

2. Linux 에서 Mount 하기

 - Linux 에서 Windows 공유폴더를 마운트 하기 위해 사전에 공유가 되어있는 폴더를 확인 합니다.

   확인하기 위하여 Linux Server 에 smbclient 명령어로 확인 합니다.

   (smbclient 로 굳이 확인하지 않아도 되며, 해당 명령어가 없을경우 yum install samba-client 로 설치합니다.)

 

[root@b ~]# smbclient -L 192.168.0.250 -U administrator Password: Domain=[WIN-8HTL0M86Y6M] OS=[Windows Server (R) 2008 Standard 6002 Service Pack 2] Server=[Windows Server (R) 2008 Standard 6.0] Sharename Type Comment --------- ---- ------- ADMIN$ Disk 硅 ? C$ Disk 0?? D$ Disk 0?? Downloads Disk IPC$ IPC 硅 IPC Test Disk Users Disk

 

위 처럼 smbclient -L [Windows공유서버IP] -U [공유폴더에 접근가능한 계정] 명령어로 확인하면 위에 공유한 TEST 라는

공유 폴더를 확인할 수 있습니다.

 

 

 

[root@b ~]# mount -t cifs ⁄⁄192.168.0.250⁄TEST ⁄TEST -o username="administrator",password="test1234"

 

mount -t cifs //[Windows공유서버IP]/[공유폴더이름] /[공유할 폴더명] -o username="[공유계정]",password="[암호]"

 

mount 명령어로 위와 같이 윈도우 공유폴더를 리눅스상에서 확인할 수 있습니다.

mount 의 type 은 cifs 로 설정하고, username 과 password 를 입력해두면 시스템이 부팅될때 자동으로 Mount 할 수 있습니다.

 

 

[root@b ~]# vi ⁄etc⁄rc.local

#!⁄bin⁄sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch ⁄var⁄lock⁄subsys⁄local

⁄bin⁄mount -t cifs ⁄⁄192.168.0.250⁄TEST ⁄TEST -o username="administrator",password="test1234"




[root@b ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
⁄dev⁄rd⁄c0d0p3         31G   13G   17G  44% ⁄
⁄dev⁄rd⁄c0d0p1        190M   17M  164M  10% ⁄boot
tmpfs                 760M     0  760M   0% ⁄dev⁄shm
⁄⁄192.168.0.250⁄TEST
                       69G  2.7G   66G   4% ⁄TEST

정상적으로 Mount가 완료되었습니다. 이제 Linux 에서 파일을 생성하여 Windows 서버에서 확인해보겠습니다.

 

[root@b TEST]# echo "test 완료" >> test.txt
[root@b TEST]#
[root@b TEST]# ls -al
total 9
drwxrwxrwx  1 root root    0 May 21 12:30 .
drwxr-xr-x 25 root root 4096 May 21 11:57 ..
-rwxrwSrwx  1 root root   10 May 21 12:30 test.txt

 

 

궁금하신 사항은 댓글 주세요.^^

 

▽도움이 되셨다면 아래의 손가락광고배너 한번 클릭해주는 센스는 매우 감사ㅠ_ㅠ

 

 

 

Posted by 소울하트