반응형
반응형
반응형

Server_B가 Server_A를 trust하도록 설정하면, Server_A 에서 Server_B로의 ssh, scp
등에 대해 패스워드 입력없이 진행 가능합니다.
Server_B와 Server_A 간에 양방향으로 trust관계를 성립하려면,
아래 Server_B trust Server_A configuration을 양쪽서버 두에서 작업하시면 됩니다.

* Server_B trust Server_A configuration

1. Server_B : /etc/ssh/sshd_config 주석제거
--------------------------------------------------------------------------------
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

PasswordAuthentication yes
--------------------------------------------------------------------------------

2. Server_B : sshd 재시작
# service sshd restart

3. Server_A : rsa key 생성
# /usr/bin/ssh-keygen -t rsa
- 키가 저장될 곳과 이름을 물어 오는데 디폴트로 그냥 엔터를 치고 넘어가면, 인증키 암호를 물어온다. 원하는 암호를 두번 입력해주면 키가 생성된다. (그냥 엔터를 치면 된다. 이것은 ssh 접속시 암호를 입력하지 않아도 그냥 접속이 되므로 편리할수는 있으나, 만약 당신의 인증키가 어떠한 경로로든 유출되었을 경우를 생각 해보면 피해야 할 것이다)

4. Server_A : Server_B로 rsa key 복사
# ssh user@server_B "mkdir ~/.ssh; chmod 0700 ~./ssh"
# scp ~/.ssh/id_rsa.pub user@server_B:~/.ssh/authorized_keys

5
. 테스트
 - Server_A 에서 ssh를 통해 Server_B로 접속
# ssh user@Server_B


반응형
반응형


http://www.net-snmp.org/
* 소스 버전 net-snmp-5.4.2.1 설치 절차


OS: SunOS 5.10 x86
gcc Version: 3.4.6
net-snmp Version: 5.4.2.1


-----------------------------------------------------
-- OS 설치 시 자동 설치된 snmp check.


1. 데몬 프로세스 확인.

# ps -ef | grep snmp
35:   636 ?        S  0:03 /usr/sfw/sbin/snmpd
43: 12815 ?        S  0:00 /usr/lib/snmp/snmpdx -y -c /etc/snmp/conf
45: 12839 ?        S  0:00 /usr/lib/dmi/snmpXdmid -s sgn


2. 서비스 등록 확인.

# svcs | grep dmi
113:online          8월_03  svc:/application/management/dmi:default

# svcs | grep snmp
120:online         15:01:37 svc:/application/management/snmpdx:default

# svcs | grep sma
112:online          8월_03  svc:/application/management/sma:default


3. svcadm 명령으로 disable 시킨다.

# svcadm disable svc:/application/management/dmi:default
# svcadm disable svc:/application/management/snmpdx:default
# svcadm disable svc:/application/management/sma:default


4. ps 및 svcs 명령으로 정상적으로 중지되었는지 확인한다. 

# ps -ef | grep snmp
# svcs | grep dmi
# svcs | grep snmp
# svcs | grep sma


-----------------------------------------------------
-- 설치


1. install

-- root 로 로그인.
-- gcc 설치.

# gunzip net-snmp-5.4.2.1.tar.gz
# tar -xvf net-snmp-5.4.2.1.tar
# cd net-snmp-5.4.2.1

# ./configure
# make
# make install


2. conf 설정

-- EXAMPLE.conf를 /usr/local/share/snmp/snmpd.conf 로 복사하여 수정하여 사용한다.
# cp EXAMPLE.conf /usr/local/share/snmp/snmpd.conf
# vi /usr/local/share/snmp/snmpd.conf


3. 시스템에 맞게 수정한다
# NETWORK -> IP Address 대역으로 수정 (예: NETWORK -> 192.168.2.0)
# COMMUNITY -> Manager 연동할 인증 문자열로 수정 (예: COMMUNITY -> public)
#       sec.name  source          community
com2sec local     localhost       public
com2sec mynetwork 192.168.2.0/24  public

-- OMS(Manager)와 해당 서버(Agent)가 192.168.2.XXX 대로 연동이 가능하면 “192.168.2.0/24” 로 설정하시면 되고,
-- 외부 망으로만 연동이 가능하다면 “공인IP.0/24” 로 설정하시면 됩니다.

-- (1) 192.168.2.xxx 대역으로 연동 가능 시: com2sec mynetwork 192.168.2.0/24    public
-- (2) 외부 망으로만 연동 가능 시:           com2sec mynetwork 공인IP.0/24 public


4. 시스템에 맞게 수정한다
syslocation Seoul Korea
syscontact aaa@bbb.com


5
. 아래 부분을 찾아 관리 대상이 되는 프로세스를 등록한다.
# Process checks.
#
#  The following are examples of how to use the agent to check for
#  processes running on the host.  The syntax looks something like:
#
#  proc NAME [MAX=0] [MIN=0]
#
#  NAME:  the name of the process to check for.  It must match
#         exactly (ie, http will not find httpd processes).
#  MAX:   the maximum number allowed to be running.  Defaults to 0.
#  MIN:   the minimum number to be running.  Defaults to 0.
proc aaaProck 1 1
proc bbbProc 1 1
proc cccProc 1 1


6. 아래 부분을 찾아 관리 대상이 되는 Disk를 등록한다.
# disk checks
#

# The agent can check the amount of available disk space, and make
# sure it is above a set limit.

# disk PATH [MIN=DEFDISKMINIMUMSPACE]
#
# PATH:  mount path to the disk in question.
# MIN:   Disks with space below this value will have the Mib's errorFlag set.
#        Default value = DEFDISKMINIMUMSPACE.
disk / 10000


7. 자동 실행 스크립트 작성
-- 시스템이 부팅 될때 실행한다.
-- 스크립트 작성 후 한번 실행시킨다.

# cd /etc/rc3.d
# vi S78net-snmp


#!/sbin/sh
#
# /etc/rc3.d/S78net-snmp
#
# pkill has moved over the years so we need to find it
#
LD_LIBRARY_PATH=/usr/lib:/lib:/usr/share/lib:/usr/local/lib:/usr/local/ssl/lib
PATH=/sbin:/usr/sbin:/bin:/usr/bin
export PATH LD_LIBRARY_PATH

X=`which pkill`

case "$1" in
'start')
    /usr/local/sbin/snmpd
    ;;

'stop')
    $X -TERM -x -u 0 snmpd
    ;;

*)
    echo "Usage: $0 { start | stop }"
    exit 1
    ;;
esac
exit 0


# chmod +x S78net-snmp


8. 기존에 설치된 snmp 부팅시 로드 되는 부분 제거.
/var/svc/profile/generic_open.xml
enabled='false' 로 수정.

  <service name='application/management/sma' version='1' type='service'>
    <instance name='default' enabled='false' />
  </service>
  <service name='application/management/dmi' version='1' type='service'>
    <instance name='default' enabled='false' />
  </service>
  <service name='application/management/snmpdx' version='1' type='service'>
    <instance name='default' enabled='false' />
  </service>

반응형
반응형
솔라리스 10
C Shell

어제 날짜 구하기.

setenv yesterday `setenv TZ ROK+15;date +%Y-%m-%d`


# TZ=KST-9 이라서 어제의 날짜는 TZ=KST-9+24 해서 TZ=KST+15
# 우리나라 timezone이 KST(KDT,ROK)인데 이것이 GMT+9 의 값을 가지므로 +15를 하여 하루를 돌려버림.
# 3일전 : KST+$((2*24+15))


반응형

'OS > Linux' 카테고리의 다른 글

서버간 trust 설정. scp 사용.  (0) 2009.10.20
[솔라리스] snmp 설치  (0) 2009.09.14
[솔라리스10] OS 정보 확인.  (0) 2009.08.31
솔라리스 10 (Solaris 10)에서 CVS 설치  (2) 2009.08.26
솔라리스 10에 vim설치하기  (2) 2009.08.26
반응형

OS 정보 확인.
# uname -a
SunOS sms-01 5.10 Generic_139556-08 i86pc i386 i86pc


솔라리스가 어떤 bit 환경에서 작동하는지 확인.
# isainfo -v
64-bit amd64 applications
        sse4.1 ssse3 cx16 mon sse3 sse2 sse fxsr mmx cmov amd_sysc cx8 tsc fpu
32-bit i386 applications
        sse4.1 ssse3 cx16 mon sse3 sse2 sse fxsr mmx cmov sep cx8 tsc fpu

반응형
반응형

설치하기 위해 필요한 파일들.

http://www.sunfreeware.com 참조.

오른쪽 메뉴에서 플랫폼과 OS 를 선택한 후.
다운 받을 CVS 를 클릭
 : cvs-1.12.13


cvs-1.12.13-sol10-x86-local.gz
Dependencies: libiconv, libintl, and libgcc_s.so.1 must be in /usr/local/lib by installing libgcc-3.4.6 or gcc-3.4.6 or higher.

libintl-3.4.0-sol10-x86-local.gz

Libintl is used with gettext and is needed by a few programs when libintl in not in /usr/lib - installs in /usr/local/lib.
Dependencies: libiconv and to have /usr/local/lib/libgcc_s.so.1 and /usr/local/lib/libstdc++.so.6, either the libgcc-3.4.6 or gcc-3.4.6 packages.

libiconv-1.11-sol10-x86-local.gz

GNU libiconv provides an iconv() implementation for use on systems which do not have one - installs in /usr/local.
Dependencies: db-4.2.52.NC, and libgcc_s.so.1 from libgcc-3.4.6 or gcc-3.4.6 or higher.

db-4.2.52.NC-sol10-intel-local.gz
db is the Berkeley open source embedded database system - installs in /usr/local/BerkeleyDB.4.2. This packages also requires that you have install either libgcc or gcc.

libgcc-3.4.6-sol10-x86-local.gz
libgcc_s.so
libgcc_s.so.1
libstdc++.so
libstdc++.so.6
libstdc++.so.6.0.3
Since these files are part of the gcc 3.4.6 package, you may not need to install it if you already have gcc 3.4.6 installed. This package is created because some programs will not run without these libraries - installs in /usr/local/lib. Earlier versions of the files in libgcc can be found at libgcc-3.3 or in the ftp archive.



1. cvs설치 여부 확인  'cvs -v' 실행

2. root 로 수행

3. 위의 파일을 다운 받는다.(Dependencies 참조)

4. 압축해제.
gunzip libgcc-3.4.6-sol10-x86-local.gz
gunzip db-4.2.52.NC-sol10-intel-local.gz
gunzip libiconv-1.11-sol10-x86-local.gz
gunzip libintl-3.4.0-sol10-x86-local.gz
gunzip cvs-1.12.13-sol10-x86-local.gz

5. 패키지 설치.
pkgadd -d libgcc-3.4.6-sol10-x86-local
pkgadd -d db-4.2.52.NC-sol10-intel-local
pkgadd -d libiconv-1.11-sol10-x86-local
pkgadd -d libintl-3.4.0-sol10-x86-local
pkgadd -d cvs-1.12.13-sol10-x86-local

6. 저장소(Repository) 생성
# mkdir /export/home/cvs

7. 저장소(Repository) 초기화
# cvs -d /export/home/cvs init
저장소 디렉토리(/export/home/cvs) 에 CVSROOT 폴더 생성,초기화된다

8. cvs 유저 생성
# useradd cvs
# passwd cvs 
   cvs 그룹 추가
# /etc/group 열어서

cvs::1001: #추가
# chown -R root:cvs /export/home/cvs
# chmod -R 770 /export/home/cvs

9. cvs사용자 등록
/export/home/cvs/CVSROOT/passwd 파일 수정
계정아이디:비밀번호:cvs
비밀번호는 암호화되야함.
아래 명령어 수행(아파치 설치시 기본으로 설치됨)
# htpasswd -nb [계정아이디] [패스워드]

htpasswd 가 없다면..
첨부 파일을 이용하여 아이디를 생성한다.

createcvspasswd [유저이름]



10. cvs 서버 실행
/etc/services 화일을 수정.
# chmod +w /etc/services
# vi /etc/services 하셔서 마지막 줄에 아래 두라인을 삽입해줍니다.

cvspserver 2401/tcp # CVS pserver tcp port
cvspserver 2401/udp # CVS pserver udp port


임의의 화일 inetd_cvs 화일을 만들어 줍니다.
(임시적인 화일이므로 아무이름이나 상관없습니다.)
inetd_cvs라는 화일을 만드시고 난후 화일내용에

cvspserver stream tcp nowait root /usr/local/bin/cvs -f --allow-root=/export/home/cvs pserver

이란 내용을 삽입해 줍니다.

위 내용을 삽입하시고 화일을 만드셨다면 이제 SMF에 등록해야겠죠
# inetconv -f -i ./inetd_cvs
cvspserver -> /var/svc/manifest/network/cvspserver-tcp.xml
cvspserver-tcp.xml을(를) 가져오는 중 ...완료

위와 같이 메세지가 나오면 정상입니다. (/var/svc/manifest/network/cvspserver-tcp.xml 화일이 생성됩니다.)

여기까지 완료하셨다면 /var/svc/profile/inetd_services.xml 을 수정해 주시면 되는데
inetd_services.xml의 내용에

<service name='network/cvspserver-tcp' version='1' type='service'>
<instance name='default' enabled='true' />
</service>

를 삽입해주시기 바랍니다.

이제 서비스를 다시 재시작 해주시고 간단히 테스트 해봅시다.
# svcadm restart svc:/network/inetd:default

# svcs |grep ccvs
online 15:56:43 svc:/network/cvspserver/tcp:default

# netstat -a |grep cvs
*.cvspserver *.* 0 0 49152 0 LISTEN

정상적으로 잘 작동되는군요 ..


반응형

'OS > Linux' 카테고리의 다른 글

[솔라리스] 어제 날짜 구하기.  (0) 2009.09.01
[솔라리스10] OS 정보 확인.  (0) 2009.08.31
솔라리스 10에 vim설치하기  (2) 2009.08.26
[Unix] Sun 에서 사용자 추가시 shell 문제점.  (1) 2009.08.04
ln 명령어.  (0) 2009.07.29
반응형


vim 다운로드 사이트.
http://www.sunfreeware.com

step1. 오른쪽 메뉴의 Pick Processor/OS: 메뉴에서 사용하는 것을 고른다.

사용하는 cpu(processor)와 OS 클릭


step2. 나열된 package 중에서 vim 을 검색하고 클릭한다.

step3. vim-7.2-sol10-x86-local.gz 클릭.

vim은 /usr/local이라는 곳에 인스톨 된다고 나와있고..

gtk+-1.2.10, glib-1.2.10, ncurses에 의존한다니 각각 찾아서 다운 받는다.

vim-7.2-sol10-x86-local.gz
gtk+-1.2.10-sol10-intel-local.gz
glib-1.2.10-sol10-intel-local.gz
ncurses-5.6-sol10-x86-local.gz

step4. 다운 받은 파일들의 압축을 푼다.

#gunzip vim-7.2-sol10-x86-local.gz
#gunzip gtk+-1.2.10-sol10-intel-local.gz
#gunzip glib-1.2.10-sol10-intel-local.gz
#gunzip ncurses-5.6-sol10-x86-local.gz  

step5 package를 하나하나 설치한다.

vim-7.2-sol10-x86-local은 가장 마지막에 설치.

#pkgadd -d gtk+-1.2.10-sol10-intel-local
#pkgadd -d glib-1.2.10-sol10-intel-local
#pkgadd -d ncurses-5.6-sol10-x86-local
#pkgadd -d vim-7.2-sol10-x86-local

각각의 package 설치할때 어떻게 설치하냐고 묻는다.
default값은 all이고 모두 설치. 별 특이사항 없으면...all이 편하다.

step6 실행 되는지 확인하러 가 보자.

#cd /usr/local/bin
#./vim



================== 이 후 옵션 ============


step7 path설정.


PATH=/usr/local/bin:/usr/ccs/bin:$PATH
export PATH
LD_LIBRARY_PATH=/usr/lib:/usr/local/lib:/usr/sfw/lib:/usr/openwin/lib:/usr/openwin/bin:/usr/dt/lib:/usr/ucblib
export LD_LIBRARY_PATH

step8 .bashrc설정(csh나 다른 쉘을 쓴다면 거기에 맞게 설정)

.bashrc에 아래내용을 추가한다.
TERM=ansi                  # 칼라 vim 사용(:syntax on)을 위하여 설정
alias vi="/usr/local/bin/vim"   # vi 명령을 vim으로 전환

step9 .vimrc 스로 필요한것만 채워놓도록 한다.

반응형

'OS > Linux' 카테고리의 다른 글

[솔라리스10] OS 정보 확인.  (0) 2009.08.31
솔라리스 10 (Solaris 10)에서 CVS 설치  (2) 2009.08.26
[Unix] Sun 에서 사용자 추가시 shell 문제점.  (1) 2009.08.04
ln 명령어.  (0) 2009.07.29
grep 사용법  (0) 2009.02.11
반응형

OS : SunOS 5.9

useradd 를 통해서 계정 추가.
 - useradd xyz
 - passwd xyz
   (기본 쉘 : bash)


디렉토리 생성 및 권한 수정.
 - mkdir /home/xyz
 - chown -R OWN:GROUP xyz


xyz 로 로그인 시 alias 및 prompt 포멧 적용 시키기 위해

.bashrc 파일을 만들었다.

이때.. 적용이 안되더라.


문제 해결
 - .bash_profile 파일을 설정파일로 사용하고 있었음.
    그래서 .bashrc 파일을 .bash_profile 로 변경.

반응형

'OS > Linux' 카테고리의 다른 글

솔라리스 10 (Solaris 10)에서 CVS 설치  (2) 2009.08.26
솔라리스 10에 vim설치하기  (2) 2009.08.26
ln 명령어.  (0) 2009.07.29
grep 사용법  (0) 2009.02.11
리눅스 명령어  (0) 2009.02.11
반응형


link :
http://purecolor.tistory.com/entry/ln-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%98%B5%EC%85%98


ln 명령어 옵션

1. 파일 링크의 개념

i-node는 파일의 생성과 동시에 임의로 부여되며,  번호확인은 ls -i 로 확인할 수 있다. 또한  리눅스에서는 모든 디바이스나 디렉토리를 파일개념으로 인식하기 때문에 전부 inode를 부여받는다.  만약 inode가 같은 파일이 있다면 파일 이름이 다르더라도 이 파일은 같은 파일이 된다.

[하드 링크]

하드 링크는 일반 파일을 링크할 때 주로 이용하며, 옵션없이 ln 명령으로 링크시키면 된다. 생성된 링크 파일은 원래 파일의 inode(index node라 하며 파일에 대한 정보가 저장된 레코드)를 그대로 참조하기에 원 파일이 지워져도 아무런 문제가 되지 않는다.
[심볼릭 링크 - ln -s 명령으로 링크]

심볼릭 링크는 주로 디렉토리를 링크할 때 사용한다. 원 파일이 삭제되면 실제 데이터 블럭을 참조하던 inode도 삭제되어, 심볼릭 링크된 파일은 의미가 없어진다.

2. ln 명령어
[option]
   -s : 심볼릭링크(소프트링크)를 생성한다. 만약 이 옵션이 없으면 하드링크가 생성된다.
   -v : 링크를 만드는 정보를 자세히 출력한다.

[예제]
# ln -s /directory/* linkdir : /directory/디렉토리 안의 모든 파일의 링크 파일을 linkdir 디렉토리에 생성
# ln -s ./sourcefile ./linkfile : 링크생성
# ls -ld linkfile : 링크확인
# unlink(또는 rm) linkfile : 링크해제
/etc/xinetd.d 라는 디렉토리를 자주간다면 현재 나의 홈디렉토리에 링크해보자.
ln -s /etc/xinetd.d xx => /etc/xinetd.d라는 디렉토리를 현재 디렉토리의 xx라는 것으로 링크한다. ls xx 하면 ls /etc/xinetd.d의 내용과 동일한 내용이 나타나고 또한 cd xx하면 그 디렉토리안으로 들어간 것과 같다.


Usage: ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)
  or:  ln [OPTION]... TARGET                  (2nd form)
  or:  ln [OPTION]... TARGET... DIRECTORY     (3rd form)
  or:  ln [OPTION]... -t DIRECTORY TARGET...  (4th form)
In the 1st form, create a link to TARGET with the name LINK_NAME.
In the 2nd form, create a link to TARGET in the current directory.
In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.
Create hard links by default, symbolic links with --symbolic.
When creating hard links, each TARGET must exist.

긴 옵션에서 꼭 필요한 인수는 짧은 옵션에도 꼭 필요합니다.
      --backup[=CONTROL]      make a backup of each existing destination file
  -b                          like --backup but does not accept an argument
  -d, -F, --directory         allow the superuser to attempt to hard link
                                directories (note: will probably fail due to
                                system restrictions, even for the superuser)
  -f, --force                 remove existing destination files
  -n, --no-dereference        treat destination that is a symlink to a
                                directory as if it were a normal file
  -i, --interactive           prompt whether to remove destinations
  -s, --symbolic              make symbolic links instead of hard links
  -S, --suffix=SUFFIX         override the usual backup suffix
  -t, --target-directory=DIRECTORY  specify the DIRECTORY in which to create
                                the links
  -T, --no-target-directory   treat LINK_NAME as a normal file
  -v, --verbose               print name of each file before linking
      --help     이 도움말을 표시하고 끝냅니다
      --version  버전 정보를 출력하고 끝냅니다

The backup suffix is `~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.
The version control method may be selected via the --backup option or through
the VERSION_CONTROL environment variable.  Here are the values:

  none, off       never make backups (even if --backup is given)
  numbered, t     make numbered backups
  existing, nil   numbered if numbered backups exist, simple otherwise
  simple, never   always make simple backups

반응형

'OS > Linux' 카테고리의 다른 글

솔라리스 10에 vim설치하기  (2) 2009.08.26
[Unix] Sun 에서 사용자 추가시 shell 문제점.  (1) 2009.08.04
grep 사용법  (0) 2009.02.11
리눅스 명령어  (0) 2009.02.11
.bashrc 파일 적용  (0) 2009.02.11
반응형
제3장 grep 계열 명령어

3.1 grep 명령어

3.1.1 grep의 의미

grep : 파일 전체를 뒤져 정규표현식에 대응하는 모든 행들을 출력한다.
egrep : grep의 확장판으로, 추가 정규표현식 메타문자들을 지원한다.
fgrep : fixed grep 이나 fast grep으로 불리며, 모든 문자를 문자 그래도 취급한다. 즉, 정         규표현식의 메타문자도 일반 문자로 취급한다.

3.1.2 grep의 동작 방법

grep에서 사용하는 정규표현식 메타문자
메타문자
기    능
사용 예
사용 예 설명
^
행의 시작 지시자
'^love'
love로 시작하는 모든 행과 대응
$
행의 끝 지시자
'love$'
love로 끝나는 모든 행과 대응
.
하나의 문자와 대응
'l..e'
l 다음에 두 글자가 나오고 e로 끝나는 문자열을 포함하는 행과 대응
*
선행문자와 같은 문자의 0개 혹은 임의개수와 대응
' *love'
0개 혹은 임의 개수의 공백 문자 후에 love로 끝나는 문자열을 포함한 행과 대응
[]
[] 사이의 문자 집합중 하나와 대응
'[Ll]ove'
love나 Love를 포함하는 행과 대응
[^ ]
문자집합에 속하지 않는 한 문자와 대응
'[^A-K]love'
A와 K 사이의 범위에 포함되지 않는 한 문자와 ove가 붙어있는 문자열과 대응
<
단어의 시작 지시자
'<love'
love로 시작하는 단어를 포함하는 행과 대응(vi,grep에서 지원)
>
단어의 끝 지시자
'love>'
love로 끝나는 단어를 포함하는 행과 대응
(vi,grep에서 지원)
(..)
다음 사용을 위해 태그를 붙인다.
'(lov)ing'
지정된 부분을 태크1에 저장한다. 나중에 태그값을 참고하려면 1을 쓴다. 맨 왼쪽부터 시작해 태그를 9개가지 쓸 수 있다. 왼쪽 예에서는 lov가 레지스터1에 저장되고 나중에 1로 참고할 수 있다.
x{m}
문자 x를 m번 반복한다.
'o{5}'
문자 o가 5회 연속적으로 나오는 모든 행과 대응
x{m,}
적어도 m번 반복한다.
'o{5,}'
문자 o가 최소한 5회 반복되는 모든 행과 대응
x{m,n}
m회 이상 n회 이하 반복한다.
o{5,10}'
문자 o가 5회에서 10회 사이의 횟수로 연속적으로 나타나는 문자열과 대응

grep의 옵션
옵션
동작 설명
-b
검색 결과의 각 행 앞에 검색된 위치의 블록 번호를 표시한다. 검색 내용이 디스크의 어디쯤 있는지 위치를 알아내는데 유용하다.
-c
검색 결과를 출력하는 대신, 찾아낸 행의 총수를 출력한다.
-h
파일 이름을 출력하지 않는다.
-i
대소문자를 구분 하지 않는다.(대문자와 소문자를 동일하게 취급).
-l
패턴이 존재하는 파일의 이름만 출력한다.(개행문자로 구분)
-n
파일 내에서 행 번호를 함께 출력한다.
-s
에러 메시지 외에는 출력하지 않는다. 종료상태를 검사할 때 유용하게 쓸 수 있다.
-v
패턴이 존재하지 않는 행만 출력한다.
-w
패턴 표현식을 하나의 단어로 취급하여 검색한다.

# grep -n '^jack:' /etc/passwd
(/etc/passwd 파일에서 jack을 찾는다. jack이 행의 맨 앞에 있으면 행 번호를 화면으로 출력한다.)

3.1.3 grep과 종료 상태
grep은 파일 검색의 성공 여부를 종료 상태값으로 되돌려준다.
패턴을 찾으면 0, 패턴을 찾을 수 없으면 1, 팡리이 존재하지 않을 경우 2
sed,a자 등은 검색의 성공 여부에 대한 종료 상태값을 반환하지 않는다. 다만 구문 에러가 있을 경우에만 에러를 보고한다.

3.2 정규표현식을 사용하는 grep의 예제
# grep NW datafile
# grep NW d*
(d로 시작하는 모든 파일에서 NW를 포함하는 모든 행을 찾는다.)
# grep '^n' datafile
(n으로 시작하는 모든 행을 출력한다.)
# grep '4$' datafile
(4로 끝나는 모든 행을 출력한다.)
# grep TB Savage datafile
(TB만 인자이고 Savage와 datafile은 파일 이름이다.)
# grep 'TB Savage' datafile
(TB Savage를 포함하는 모든 행을 출력한다.)
# grep '5.' datafile
(숫자 5, 마침표, 임의의 한 문자가 순서대로 나타나는 문자열이 포함된 행을 출력한다.)
# grep '.5' datafile
(.5가 나오는 모든 행을 출력한다.)
# grep '^[we]' datafile
(w나 e로 시작하는 모든 행을 출력한다.)
# grep '[^0-9]' datafile
(숫자가 아닌 문자를 하나라도 포함하는 모든 행을 출력한다.)
# grep '[A-Z][A-Z] [A-Z]' datafile
(대문자 2개와 공백 1개, 그리고 대문자 하나가 연이어 나오는 문자열이 포함된 행을 출력한다.)
# grep 'ss* ' datafile
(s가 한 번 나오고, 다시 s가 0번 또는 여러번 나온 후에 공백이 연이어 등장하는 문자열을 포함한 모든 행을 출력한다.)
# grep '[a-z]{9}' datafile
(소문자가 9번 이상 반복되는 문자열을 포함하는 모든 행을 출력한다.)
# grep '(3).[0-9].*1 *1' datafile
(숫자 3,마침표,임의의 한 숫자,임의 개수의 문자,숫자 3(태그),임의 개수의 탭 문자,숫자 3의 순서를 갖는 문자열이 포한된 모든 행을 출력한다.)
# grep '<north' datafile
(north로 시작하는 단어가 포함된 모든 행을 출력한다.)
# grep '<north>' datafile
(north라는 단어가 포함된 모든 행을 출력한다.)
# grep '<[a-z].*n>' datafile
(소문자 하나로 시작하고, 이어서 임의 개수의 여러 문자가 나오며, n으로 끝나는 단어가 포함된 모든 행을 출력한다. 여기서 .*는 공백을 포함한 임의의 문자들을 의미한다.)

3.3 grep에 옵션 사용
# grep -n '^south' datafile
(행번호를 함께 출력한다.)
# grep -i 'pat' datafile
(대소문자를 구별하지 않게 한다.)
# grep -v 'Suan Chin' datafile
(문자열 Suan Chin이 포함되지 않은 모든 행을 출력하게 한다. 이 옵션은 입력 파일에서 특정 내용의 입력을 삭제하는데 쓰인다.
# grep -v 'Suan Chin' datafile > black
# mv black datafile
)
# grep -l 'SE' *
(패턴이 찾아진 파일의 행 번호 대신 단지 파일이름만 출력한다.)
# grep -w 'north' datafile
(패턴이 다른 단어의 일부가 아닌 하나의 단어가 되는 경우만 찾는다. northwest나 northeast 등의 단어가 아니라, north라는 단어가 포함된 행만 출력한다.)
# grep -i "$LOGNAME" datafile
(환경변수인 LOGNAME의 값을 가진 모든 행을 출력한다. 변수가 큰따옴표로 둘러싸여 있는 경우, 쉘은 변수의 값으로 치환한다. 작은따옴표로 둘러싸여 있으면 변수 치환이 일어나지 않고 그냥 $LOGNAME 이라는 문자로 출력된다.)

3.4 egrep
egrep(extended grep) : grep에서 제공하지 않는 확장된 정규표현식 메타문자를 지원  한다.
                                     grep와 동일한 명령행 옵션을 지원한다.
egrep에서 지원하는 확장 메타문자
메타문자
기능
사용 예
사용 예 설명
+
선행문자와 같은 문자의 1개 혹은 임의 개수와 대응
'[a-z]+ove'
1개 이상의 소문자 뒤에 ove가 붙어있는 문자열과 대응. move,approve,love,behoove 등이 해당된다.
?
선행문자와 같은 문자의0개 혹은 1개와 대응
'lo?ve'
l 다음에 0개의 문자 혹은 하나의 문자가 o가 나오는 문자열과 대응. love,lve 등이 해당된다.
a|b
a 혹은 b와 대응
'love|hate'
love 혹은 hate와 대응.
()
정규표현식을 묶어준다
'love(able|ly)'
lovable 혹은 lovely와 대응.
'(ov)+'
ov가 한 번 이상 등장하는 문자열과 일치.

3.4.1 egrep 예제
# egrep 'NW|EA' datafile
(NW나 EA가 포함된 행을 출력한다.)
# egrep '3+' datafile
(숫자 3이 한 번 이상 등장하는 행을 출력한다.)
# egrep '2.?[0-9]' datafile
(숫자 2 다음에 마침표가 없거나 한 번 나오고, 다시 숫자가 오는 행을 출력한다.)
# egrep ' (no)+' datafile
(패턴 no가 한 번 이상 연속해서 나오는 행을 출력한다.)
# egrep 'S(h|u)' datafile
(문자 S 다음에 h나 u가 나오는 행을 출력한다.)
# egrep 'Sh|u' datafile
(패턴 Sh나 u를 포함한 행을 출력한다.)

3.5 고정 grep 과 빠른 grep
fgrep : grep 명령어와 동일하게 동작한다. 다만 정규표현식 메타문자들을 특별하게 취급하지
          않는다.
# fgrep '[A-Z]****[0-9]..$5.00' file
([A-Z]****[0-9]..$5.00 이 포함된 행을 출력한다. 모든 문자들을 문자 자체로만 취급한다.)

반응형

'OS > Linux' 카테고리의 다른 글

[Unix] Sun 에서 사용자 추가시 shell 문제점.  (1) 2009.08.04
ln 명령어.  (0) 2009.07.29
리눅스 명령어  (0) 2009.02.11
.bashrc 파일 적용  (0) 2009.02.11
path 추가  (0) 2009.02.11
반응형
alias(명령어 간소화하기)
apropos(관련된 명령어 찾기)
arch(컴퓨터 종류 알기)
arp(같은 서브넷의 IP 보여주기)
at(작업 시간 정하기)
atd(계획성 있는 작업 실행하기)
awk(특정 패턴 문자 처리하기)
a2p(펄 파일로 바꾸기)
badblocks(배드 블럭 검사하기)
bc(계산기)
biff(메일 수신 소리로 확인하기)
bg(후면작업; 배경화면 설정)
bind(키나 함수 순서 결합하기)
break(루프 빠져나가기)
cal(달력보기)
builtin(내부 명령어 알아보기)
case(조건 처리하기)
cat(화면상에서 파일 보기)
cd(디렉토리 변경하기)
cfdisk(디스크 설정하기)
chattr(파일 속성 변경하기)
chfn(사용자 정보 변경하기)
chgrp(파일, 디렉토리가 속했던 그룹 바꾸기)
chmod(파일 권한 바꾸기)
chown(파일 주인 바꾸기)
chsh(지정된 셸 바꾸기)
cksum(CRC값을 점검한다)
clear(화면 청소하기)
clock(CMOS 시각을 조정하기)
cmp(파일 비교하기)
colcrt(문자 변환 필터)
colrm(열 삭제하기)
column(가로 정렬하기)
comm(파일 비교 출력하기)
command(명령어 알아보기)
continue(루프 계속돌기)
cp(파일 복사하기)
cpio(복사본 만들기)
crontab(cron을 관리한다)
csplit(파일에 서식, 규칙 정하기)
cut(필요한 필드만 출력하기)
date(날짜 보기)
dd(블럭장치 읽고 쓰기)
debugfs(ext2 파일 시스템 디버깅하기)
declare(변수 선언하기)
df(파일 시스템의 사용량 보기)
dirs(디렉토리 목록 표시하기)
dmesg(부팅 메시지 보기)
dnsdomainname(DNS 이름 출력)
domainname(NIS 이름 출력&설정)
du(디렉토리와 파일의 용량 파악하기)
dumpe2fs(파일 시스템 정보 보기)
echo(표준 출력하기)
eject(장치 해제하기)
elm(메일 관련)
enable(내부 명령어 지정)
env(환경변수 출력하기)
eval(인수 읽기)
exec(셸 명령어 실행하기)
exit(종료하기)
expand(탭을 공백으로 변환하기)
export(변수 지정하기)
e2fsck(파일 시스템 복구하기)
fc(지정된 편집기 받기)
fdformat(플로피 디스크 포맷하기)
fdisk(파티션 나누기)
fg(지정된 작업을 전면 프로세스로 시작하기)
file(파일 종류 보기)
find(파일 찾기)
finger(사용자 정보 알기)
fold(정형화하기)
fmt(정형화하기)
for(반복 실행하기)
free(메모리 사용량 알아보기)
fsck(파일 시스템 검사하기)
fstab(파일 시스템에 대한 고정적인 정보 저장하기)
ftp(파일 전송 프로그램)
fuser(프로세스 ID 출력)
getkeycodes(매핑 테이블 출력하기)
grep(특정 문자(열) 검색하기)
gzexe(실행 파일 압축하기)
gzip(압축하기)
halt(시스템 종료하기)
hash(기억해 두기; index 역할)
head(파일의 앞부분 출력하기)
help(도움말 보여주기)
host(호스트 정보 보기)
history(사용 명령어 목록보기)
hostname(서버 이름 알기)
id(계정 정보 알기)
if(조건문 실행하기)
ifconfig(랜카드에 주소 할당하기)
imolamod(모듈 설치하기)
inetd(인터넷 서비스의 최상위 데몬)
init(실행 단계 정하기)
ispell(철자법 검사하기)
jobs(수행중인 프로세스 알기)
kbd_mode(키보드 모드 출력하기)
kill(프로세스 죽이기)
klogd(커널 로그 데몬)
ldd(공유 라이브러리의 의존성 알기)
less(페이지 단위로 출력하기)
let(정규식 표현하기)
lilo(부팅하기)
ln(링크하기)
locate(패턴에 맞는 파일 찾기)
login(로그인하기)
logger(시스템 로그 기록하기)
logname(사용자 로그인명 보여주기)
logout(로그인 셸 종료하기)
look(특정 단어 검색하기)
losetup(중복 장치 확인하기)
lpd(프린트 데몬)
lpq(현재 프린트 작업 상태 출력하기)
lpr(출력하기)
lprm(대기열에 있는 문서 삭제하기)
ls(디렉토리 내용보기)
lsattr(파일 시스템의 속성 보여주기)
lsdev(하드웨어 장치 출력하기)
lsmod(모듈 정보 출력하기)
mail(메일 관련)
make(컴파일하기)
man(매뉴얼 보기)
mattrib
mbadblocks
mcd
mcopy
mdel
mdeltree
mdir
mesg(메시지를 받을 수 있는지 확인하기)
mformat
minfo
mkdir (디렉토리 만들기)
mke2fs(파일 시스템 생성하기)
mkfs(파일 시스템 만들기)
mknod(특수 파일 만들기)
mkswap(스왑 영역 지정하기)
mlabel
mmd
mmount
mmove
mpartition
mount(장치 연결하기)
more(화면 단위로 출력하기)
mrd
mren
mtoolstest
mtype
mutt(메일 관련)
mv(파일 옮기기)
mzip
netstat(현재 네트웍 상황 보기)
nice(프로세스 우선 순위 변경하기)
od(8진수로 파일 보기)
passwd(암호 입력하기)
pidof(실행중인 프로그램의 프로세스 ID 찾기)
pine(메일 관련)
ping(네트웍 확인하기)
popd(pushd 취소)
ps(프로세스 纘?알기)
pstree(프로세스 상관관계 알기)
pwd(절대경로 보여주기)
quota(디스크 한계량 알기)
rarp(rarp 테이블 관리하기)
rcp(원격 호스트에 파일 복사하기)
rdev(루트, 스왑장치, 램 크기, 비디오 모드를 조사하고 설정하기)
rdate(네트웍으로 시간 설정하기)
reboot(재부팅하기)
rmmod(모듈 지우기)
readonly(읽기 전용으로 표시하기)
renice(프로세스 우선 순위 바꾸기)
reset(터미널 초기화하기)
restore(다시 저장하기)
rlogin(바로 접속하기)
rm(파일 지우기)
rmdir (디렉토리 지우기)
route(라우팅 테이블 추가/삭제하기)
rpm(프로그램 추가/삭제)
rpm2cpio(rpm을 cpio로 변환하기)
rsh(원격으로 명령어 실행하기)
rup(호스트 상태 출력하기)
rusers(호스트에 로그인한 사용자 출력하기)
rwall(호스트 사용자에게 메시지 뿌리기)
script(기록하기)
set(변수값 설정하기)
setup(시스템 관련 설정하기)
showmount(호스트의 마운트 정보 보여주기)
shutdown(전원 끄기)
sleep(잠시 쉬기)
source(스크립트 번역하기)
split(파일 나누기)
ssh(암호화된 원격 로그인하기)
stty(터미널라인 설정 보여주기)
su(계정 바꾸기)
suspend(셸 중단하기)
swapoff (스왑 해제하기)
swapon(스왑 활성화하기)
sync(버퍼 재설정하기)
syslogd(로그인 과정 설정하기)
tac(거꾸로 보기)
tail(문서 끝부분 출력하기)
talk(이야기하기)
tar(파일 묶기)
tcpdchk(tcp wrapper 설정하기)
tcpmatch(네트웍 요청에 대해 예측하기)
tee(표준 입력으로부터 표준 출력 만들기)
telnet(원격접속하기)
test(테스트하기)
times(셸에서의 사용자와 시스템 시간 출력하기)
top(cpu 프로세스 상황 보여주기)
tr(문자열 바꿔주기)
true(종료 코드 리턴하기)
type(유형 보기)
ul(밑줄 처리해서 보여주기)
ulimit(제한하기)
umask(매스크 모드 설정하기)
umount(장치 해제하기)
unalias(별명 제거하기)
uname(시스템 정보 보기)
unexpand(공백 문자를 탭으로 변환하기)
uniq(중복된 문장 찾기)
useradd(사용자 계정 만들기)
userdel(계정 삭제하기)
usermod(사용자 계정정보 수정하기)
unset(설정 변수 해제)
uptime(시스템 부하 평균 보여주기)
users(로그인된 사용자 보여주기)
w(시스템에 접속한 사용자 상황 알아보기)
wait(프로세스 기다리기)
wall(모든 사용자에게 메시지 보내기)
wc(문자, 단어, 라인수 세기)
whatis(명령어의 간단한 설명보기)
while(루프 명령어)
who(사용자 알기)
write(콘솔 상에서 간단한 메시지 보내기)
xcopy(반복적으로 복사하기)
XFree86
ypchfn(NIS에서 사용하는 chfn 명령어)
ypchsh(NIS에서 사용하는 chsh 명령어)
yppasswd(NIS에서 사용하는 passwd 명령어)
zcat(압축 파일 보기)
zcmp(압축 파일 비교하기)
zforce(강제로 gz 만들기)
zgrep(압축 상태에서 grep 실행하기)
zmore(압축 상태에서 more 실행하기)
반응형

'OS > Linux' 카테고리의 다른 글

ln 명령어.  (0) 2009.07.29
grep 사용법  (0) 2009.02.11
.bashrc 파일 적용  (0) 2009.02.11
path 추가  (0) 2009.02.11
du 명령어 (파일및 디렉토리의 용량을 확인한다.)  (0) 2009.02.11

+ Recent posts