가끔 그런 고민을 하게 됩니다..

일정시간 별로 Shell로 다른 서버에 접속해서..

작업을 해준 다면 좋겠다 라고요...

예를 들어 SHELL로 FTP 파일을 전송하고..

그 다음에는 TELNET으로 접속해 압축을 풀고..

그 파일을 실행 시켜준다면 좋겠다 라고요...

서버 두대에서 각자 크론을 돌리신다고요?

그것도 좋은 방법이긴 하죠..

하지만 FTP전송이 끝나기 전에 크론이 돌아가면 어쩌죠?

시간 스케쥴링을 잘못한다면 말이죠...

그래서 나온것인지 모르겠찌만...EXPECT라는 쉘이 있습니다..

이것을 이용하면 원격 TELNET을 SHELL로 가능하게 할 수 있지요..

대충 사용법만 보면 아실 것 같아..

제가 이전에 짜 두었던...

스크립트를 올려보도록 하겠습니다.

File 1. BmTelnet

#!/usr/local/bin/expect -f
set timeout -1
spawn telnet 서버아이피(또는 도메인)
expect -re "login: "
sleep 1
send "userid\r"
expect -re "biz's Password:"
sleep 1
send "password\r"
send "ls\r"
interact

이렇게 만들어 두고..

./BmTetlnet이라고 실행해 보세요..

오홋!! 신기하죠?

접속해서 ls까지 치고 나왔습니다..ㅎㅎ

이정도면 되겠지요?

Shell 스크립트를 다른 서버에 미리 만들어 두던가,.

아니면 여기서 명령을 쳐서 원하는 작업을 할 수 있습니다.

이제 여러분은!! 여러대의 서버를 한번에 조작할 수 있는 Shell을 만들 수 있습니다.

2대 3대의 서버를 일정 시간 한번씩 동기화 시키기도 편하고요..

그 여러대 서버를 Shell하나로 쉽게 관리 할 수 있습니다.^^

 

'컴퓨터 이야기' 카테고리의 다른 글

UNIX 아주 간단한 awk #2  (0) 2007.02.14
UNIX 아주 간단한 awk #1  (0) 2007.02.12
Unix 라인에디터  (0) 2007.02.09
find를 이용한 스크립트.  (0) 2007.02.08
내가 쓰는 ORACLE..  (2) 2007.02.08
점심때 오므라이스를 먹었다..

맛은..나쁘지 않았고..

서비스도...나쁘지 않았고...(우리에게는...하지만 우리 뒷 사람들은 음식이 늦게 나온다고 나가버렸다는...)

나는 이쁜 음식을 사진에 담는것이 주 목적이었으므로..ㅎㅎ

밥 먹고 던킨에서 먹은 녹차 라떼도..한장!!ㅋㅋ

조리개를 너무 풀었나보다;;;

음식이 다 안담겨 버렸네;;

사용자 삽입 이미지

사용자 삽입 이미지

'사진 이야기' 카테고리의 다른 글

[카메라] EOS-1D MARK 3  (6) 2007.02.22
기억을 스크랩 하다. [원효대교]  (2) 2007.02.11
과자나무..  (0) 2007.02.08
흔들리고 있습니다...  (2) 2007.02.07
나...  (2) 2007.02.02

프로그래머가...

100본 정도의 프로그램을 만들었다고 가정해봅시다..

갑자기... 코딩규칙이 바뀌거나..

모든 코드에서 쓴 또는 일부에서 쓴 함수명이 바뀌어 모든 파일을 수정 해야 하는경우가.

꼭 몇번씩 있습니다..

ㄱ-;; 저 일주일에 한번씩은 그런 일을 겪는 것 같습니다.

하지만!! 우리 Unix 프로그래머에게는 ed, red, vim 을 쉘에서 쓸수 있는..

라인에디터를 주셨습니다..

아..어느 분이신지 감사합니다.....ㅠ0ㅜ

ed, red, vim의 차이점?

크게 차이는 없는것 같습니다.

ed와 red는 시스템에 따라서 ed가 되고 red가 되는 차이인것 같고..

vim은 ed에서 쓰는 vi명령에다가 vim의 명령을 추가 했다는 느낌의 차이 뿐입니다..

자..각설하고!!

사용법을 구경해 봅시다..

Syntax

       ed [ -p String] [ -s | -] [File]

       red [ -pString] [ -s | -] [File]

사실 저도 오늘 Syntax는 처음 보았습니다.ㄱ-;;

결론는 -p옵션이나 -s 옵션을 모른다는 거죠..ㄱ-;

그래서 찾아 보았습니다.

Flags

       -p String
            Sets the editor prompt to the String parameter. The default for String is a null value
            (no prompt).
       -s
            Suppresses character counts that the editor displays with the e subcommand, r
            subcommand, and w subcommand. This flag also suppresses diagnostic messages for the e
            subcommand and the q subcommand, and suppresses the ! (exclamation point) prompt after
            an ! subcommand.
       -
            Provides the same functions as the -s flag.

자세히는 모르겠지만...
 - : e, r, w, q, ! 명령에 의해 발생하는 메시지를 금지한다.
  -s : 검사 작업을 금지한다.
  -p문자열 : 프로프트를 원하는 문자열로 바꾼다.

대충 이런 내용이라고 합니다..;;

하지만 이 옵션들을 별로 써보지 않아서.^^;;

자 그럼 대략적인 사용방법과 내용을 보여 드리지요.^^

아래는 코딩규칙의 변경으로 인해서..MSG CODE를 8000에서 8001로

일괄 변경 작업을 위한 것 입니다.

File 1. cvi

vi $1 << EOF
:1,$ s/MSG_8000/MSG_8001/g
:w
:q
EOF

File 2. cvi2

red $1 << EOF
1,$ s/MSG_8000/MSG_8001/g
w
q
EOF

대충 이해가 가시나요?

전 vi대신에 vim을 써도 되고

red 대신에 ed를 써도 됩니다.^^

자..이렇게 만들어 놓았으면...

적용을 해보아야지요?

File 3. ex

cvi PROGRAM1.pc
cvi PROGRAM2.pc
cvi PROGRAM3.pc
cvi PROGRAM4.pc
cvi PROGRAM5.pc
cvi PROGRAM6.pc

자 이 파일을 만들어 돌려 봅시다.

오홋!!

다 바뀌어 있군요.ㅋㅋ

편하고 좋지요?

이제 되도록 이런 노가다는 라인에디터에게 시키자고요.^^

우리는 고급 인력!! 프로그래머 입니다....((어멋!! 프로그래머 아니시라고요? 그럼 말구요..ㄱ-;;)

고급인력에게 이런 노가다는..해악!! 입니다.ㅎㅎ

그럼 다음에는...무얼 가지고 나올지 모르겠지만.^^

다음에 또 뵙겠습니다.ㅎㅎ





 

'컴퓨터 이야기' 카테고리의 다른 글

UNIX 아주 간단한 awk #1  (0) 2007.02.12
UNIX 에서 "expect"라는 신기한 녀석!!  (0) 2007.02.10
find를 이용한 스크립트.  (0) 2007.02.08
내가 쓰는 ORACLE..  (2) 2007.02.08
나의 백업 솔루션  (0) 2007.02.06

이번에는 아주 간단한 스크립트 입니다.

유닉스에서 자주 사용하는 find 명령이 있지요?

저는 find문을 일일이 다 치가다 어느 순간부터 귀차니즘에 빠져서..

이런 간단한 쉘을 만들어서 쓰고 있습니다..

2번, 3번 검색은 시스템에 따라 다른것인지..모르겠지만..

제가 현제 쓰는 세스템에서는

grep에 `find` 쓰는 형태보다 성능이 현저하게 느리게 나타나고 있씁니다.

차후에 바꿀까 고민도 하고 있지만..

어차피 find하는것이 아주 오래 걸리는것도 아니고..

우선은 그냥 쓰고 있습니다.

그리고 grep `find`는 파일이 많을때 문제가 될 여지가 있을 것 같은 느낌도 잇고요^^

이렇게 뛰어난 검색을 제공해주는 unix 시스템이 참 좋습니다.^^;;

윈도그에서는 구글 데스크탑을 쓰기도 하지만....

그것도 먼가 불만 스럽다는..^^;;

1. findf
단순히 파일명을 검색하는 find명령 입니다.
에러 출력을 하지 않기위해 2>/dev/null 을 사용했습니다.

find . -name $1 -print 2>/dev/null

2. findc
이것은 원하는 내용이 포함된 파일의 그 포함된 내용을 찾기 위해 사용하는 명령입니다.

if [ $# -eq 2 ]
then
    find . -name "$1" -exec grep "$2" {} \;
else
    echo "인자는 두개";
fi

3. findcf
이것은 원하는 내용을 파일명을 찾기위해 사용하는 명령입니다.

if [ $# -eq 2 ]
then
    find . -name "$1" -exec grep -l "$2" {} \;
else
    echo "인자는 두개";
fi



'컴퓨터 이야기' 카테고리의 다른 글

UNIX 에서 "expect"라는 신기한 녀석!!  (0) 2007.02.10
Unix 라인에디터  (0) 2007.02.09
내가 쓰는 ORACLE..  (2) 2007.02.08
나의 백업 솔루션  (0) 2007.02.06
내가 쓰고 있는 .vimrc  (0) 2007.02.05
내가 이런글 올리면...

보안을 신경 쓰시는 분들은 버럭!! 하실 수도 있는 일이다..

보안적으로는 좋지 못한 방법이긴하지만//.^^;;(모..요즘 DB관리가 많이들 그러니...)

편의를 위해서 사용하는 방법으로 이해 해주시길 바란다.^^


File1. /bin/rsql

아주 단순한 놈이다..-_-;
ORACLE을 한방에 로그인 하기 위해 만든..쉘

sqlplus userid/userpassword

File2. /bin/rsql2

이것도 그다지 복잡한 놈은 아니다..
rsql2 <<sql문>>
형태로 사용하는데 은근히 편하다..

echo $@ > ~/tmp/sqltmp
echo "/" >> ~/tmp/sqltmp
sqlcvi ~/tmp/sqltmp
rsql < ~/tmp/sqltmp

File3. /bin/sqlcvi

이건 위를 보면 알겠지만 rsql2에서 사용하는 놈이다... \제거하는 역할을 한다.
사실 하도 오래전에 만들어서 기억은 잘 안나지만..막상 필요 없을 법도 하다..ㄱ-;
red $1 << EOF
1,$ s/\\\//g
w
q
EOF


File4. /bin/desc

이건 말이 DESC지 TABLE 정보를 보는 쉘이다..
사용은 desc <<테이블명>>
이면 된다.
다들 아시겠지만 oracle은 Comment 컬럼의 한글명 까지 저장이 되기때문에..
영어 컬럼명을 잘 알아보기 힘들때 쓰면 편리하다.

마지막 부분의 awk사용은 단지 빈줄로 나오는 것들을 걸러내기 위함이다..
만들고 보니 빈줄이 별로 안이쁘더라는..^^

#!/usr/bin/ksh

if [ $# -ne 1 ]
then
    echo "인자를 잘못 입력하셨습니다."
    echo "사용법 : desc TABLE_NAME"
    exit
fi

tablecomment $1 > ~/tmp/.desc_tmp

awk -F : '{
    if ($0 != "") printf("%s\n",$0);
}' ~/tmp/.desc_tmp

File4. /bin/tablecomment

이건 desc에서 사용하는 프로그램이다.
내가 하는 프로젝트의 경우 규칙이 정해져 있어 컬럼명만 보면.
사이즈., 데이터형이 어느정도 구분이 가기에 사이즈, 데이터 형은 제외하고.
영문 컬럼명, 한글 컬럼명만을 출력하도록 하였다.
이는 개발자들이 필요에 따라 데이터형, 사이즈를 추가하면 된다.
모 만들기 어려우신분은 요청을 하시면 해드릴수 있습니다.ㅎㅎ

#!/usr/bin/ksh

if [ $# -ne 1 ]
then
    echo "인자는 1개"
    exit
fi

echo "TABLE NAME : $1"

sqlplus -s userid/userpwd << EOF
        set     pagesize 10000
        set     linesize 400
        column  COMMENTS format a50
        column  COLUMN_NAME format a40
        SELECT  COLUMN_NAME,
                COMMENTS
          FROM  ALL_COL_COMMENTS
         WHERE  TABLE_NAME LIKE UPPER('$1')
        ;
        exit
EOF



File5. /bin/DESC

이건 desc를 응용하여 편하게 쓰기 위해 만든 녀석이다.

#!/usr/bin/ksh

while [ 1 ]
do
    clear
    echo "TABLE NAME을 입력하세요(종료 : q) : \c"
    read TB_NAME
    if [ ${TB_NAME} = "q" ]
    then
        break
    else
        desc $TB_NAME
    fi
    read
done




 

'컴퓨터 이야기' 카테고리의 다른 글

Unix 라인에디터  (0) 2007.02.09
find를 이용한 스크립트.  (0) 2007.02.08
나의 백업 솔루션  (0) 2007.02.06
내가 쓰고 있는 .vimrc  (0) 2007.02.05
(표준화)데이터 용어사전의 필요성.  (0) 2006.12.05

+ Recent posts