i=$(($i+1))
[이현철]님이 남기신 글:
>산이님께...
>가르쳐 주신 스크립트 부분중에 마지막부분에 에러가 나는데요.
>
>아마도 여기가 에러인것같습니다.
> i=$(($i+1
>done
>
>###########################
>#!/bin/sh
>
>IFS='
>'
>WDIR='/home/backup'
>
>cd $WDIR || exit 1
>
>## 날짜 역순으로 정렬
>#
>LISTS=`ls -lt`
>
>i=1;
>for file in $LISTS ; do
> if [ "$i" -gt 7 ] ; then
> rm -f "$file"
> fi
> i=$(($i+1
>done
>############################
>
>
>
>
>
>[산이]님이 남기신 글:
>
>>
>>[이현철]님이 남기신 글:
>>
>>>언제나 산이님의 통쾌한 답변에 감사합니다..
>>>오늘도 한수 배워서 배가 아주 불려서..허허허 합니다..ㅋㅋ
>>>아주 잘 해결된것같습니다..
>>>
>>>오늘은 다른것을 하나 더 여쭈어 볼려고 하는데요..
>>>만일 파일이 아래와 같이
>>>bash-2.05# ls -al |more
>>>total 546240
>>>drwxr-xr-x 4 root bin 11264 Sep 7 19:00 .
>>>drwxr-xr-x 9 root bin 512 Aug 5 2003 ..
>>>-rw-rw-rw- 1 root root 13904752 Jul 1 05:00 20040701_access.log
>>>-rw-rw-rw- 1 root root 7751643 Jul 2 05:00 20040702_access.log
>>>-rw-rw-rw- 1 root root 6524302 Jul 3 05:00 20040703_access.log
>>>-rw-rw-rw- 1 root root 9205570 Jul 4 05:00 20040704_access.log
>>>-rw-rw-rw- 1 root root 5915410 Jul 6 05:00 20040706_access.log
>>>-rw-rw-rw- 1 root root 6194908 Jul 7 05:00 20040707_access.log
>>>-rw-rw-rw- 1 root root 8044288 Jul 8 05:00 20040708_access.log
>>>-rw-rw-rw- 1 root root 9633671 Jul 9 05:00 20040709_access.log
>>>-rw-rw-rw- 1 root root 6455530 Jul 10 05:00 20040710_access.log
>>>
>>>위와같이 매일 로그가 생겨나고 있습니다.
>>>이것을 cron을 이용해서 삭제할때
>>>한달에 한번씩 1달전분 자료를 전부삭제할려면.
>>>어떤 방법이 좋을까요?
>>>여하튼 머리가 대개 잘 안돌아가네요..
>>>
>>
>>만약 이와 같은 알고리즘이면 매월 1일인 경우는 전월 로그가 하나도
>>없어집니다.
>>
>>따라서 현재 날짜를 기준으로 1주일 전이나 한달전을 기준으로 해야 합니다.
>>
>>-------------------
>>#!/bin/sh
>>
>>IFS='
>>'
>>WDIR='/home/backup'
>>
>>cd $WDIR || exit 1
>>
>>## 날짜 역순으로 정렬
>>#
>>LISTS=`ls -lt`
>>
>>i=1;
>>for file in $LISTS ; do
>> if [ "$i" -gt 7 ] ; then
>> rm -f "$file"
>> fi
>> i=$(($i+1
>>done
>>---------------------------------
>>
>>이런식으로 하면 됩니다.
>>
>>
>>
>>>
>>>
>>>[산이]님이 남기신 글:
>>>
>>>>
>>>>[이현철]님이 남기신 글:
>>>>
>>>>>-----------------------------------------
>>>>>답변자가 기본적으로 참고할 내용입니다.
>>>>>- 배포판(옵션) :
>>>>>- 커널버전(옵션) :
>>>>>- 데몬버전(예:apache 1.3.27) :
>>>>>- 데몬설치유형(RPM/컴파일/기타) :
>>>>>-----------------------------------------
>>>>>기존에 있는 서버의 유저 어카운트와 shadow 화일을 가지고
>>>>>새로운 서버에 유저를 등록하려고 합니다..
>>>>>
>>>>>cat /etc/shadow
>>>>>##################################################
>>>>>test:$1$p5Zu7Kem$d2K7XDeWp5Qn41ZCctjyo.:12565:0:99999:7::
>>>>>testuser:H6.CGThArD.GE:12657:0:99999:7::: iga-test:$1$xvI/cF/w$Jb/a82rLBq6VyZRMRtxES.:12663:0:99999:7:::
>>>>>##################################################
>>>>>
>>>>>만일 위와 같다면 위에 내용중에 유저id와 shadow를
>>>>>파일로 뽑아 내려고 합니다.
>>>>>
>>>>>이것을 뽑아서
>>>>>
>>>>>cat list.txt
>>>>>##################################################
>>>>>test:$1$p5Zu7Kem$d2K7XDeWp5Qn41ZCctjyo
>>>>>iga-test:$1$xvI/cF/w$Jb/a82rLBq6VyZRMRtxES
>>>>>##################################################
>>>>>이런씩으로 뽑을려고 합니다.
>>>>>어떤씩으로 하면 될지요?
>>>>>
>>>>
>>>>shell> awk -F":" '{printf "%s:%s\n",$1,$2}' /etc/shadow | tee -a new.pwd
>>>>
>>>>이런식으로 하면 new.pwd 에 생성됩니다.
>>>>
>>>>그러나 사용자를 추가할 경우는 이런 방법은 좋지 않습니다.
>>>>
>>>>>그리고 위와같이 뽑은 파일을 새로운 서버에 자동으로 유저가 등록
>>>>>되도록할려고 합니다.
>>>>>
>>>>>chpasswd 를 이용해서 할려고하는데요.
>>>>>아래의 스크립트를 이용해서 위에 가져온 list.txt파일을 이용할수 없는지요.
>>>>>[root@oracle home]# vi add.sh
>>>>>############################
>>>>>#!/bin/bash
>>>>>useradd -g 1000 -c web -d /export/home/$1 -m -s /bin/bash -k /etc/skel $1
>>>>>chmod 755 /export/home/$1
>>>>>mkdir /export/home/$1/html
>>>>>chown $1 /export/home/$1/html
>>>>>chgrp customer /export/home/$1/html
>>>>>echo $1:$2 | chpasswd
>>>>>##############################
>>>>>
>>>>>
>>>>> 아니면 어디 좋은 방법을 좀 일러 주십시요...
>>>>>
>>>>>..좋은 하루되세요..
>>>>
>>>>일단 사용자가 많다면 passwd shadow group gshadow
>>>>을 복사한 다음에 새로운 시스템에 그대로 추가(append)해 주면
>>>>됩니다.
>>>>
>>>>예를 들어(passwd 파일인 경우)
>>>>
>>>> - 기존의 passwd 파일을 복사한 파일(이하 'A') :
>>>> 500 이하의 ID 는 무시하고 500 이상만 남도록 편집
>>>> - 새로운 시스템의 passwd(이하 'B'):
>>>> 500 이하의 ID 만 남도록 하고 나머지는 모두 삭제
>>>>
>>>>위와 같이 각각 편집한 다음에 A 파일을 B 서버로 옮겨놓고
>>>>
>>>>sheel> cat A >> B
>>>>
>>>>이런식으로 append 하면 됩니다.
>>>>나머지 shadow, group gshadow 도 마찬가지로,
>>>>
>>>>그 다음 계정 홈디렉토리를 만들어 줘야 하는데
>>>>useradd 명령어로 만들어 주면 안됩니다. 이미 passwd 파일에 있기
>>>>때문에, 따라서 이런 경우는 shell 스크립트로 짜서 돌리면 됩니다.
>>>>
>>>>만약 기존의 시스템 A 와 똑같은 홈디렉토리이면 기존의 A passwd
>>>>파일에서 홈 디렉토리 이름을 뽑아서 mkdir 로 만들어 주고,
>>>>그렇지 않아면 아주 다른 새로운 홈디렉토리이면, apppend 된 passwd
>>>>파일을 일괄적으로 먼저 수정해줘야 합니다.
>>>>
>>>>간단하게 하는 방법은
>>>>
>>>>------------------
>>>>#!/bin/sh
>>>>IFS='
>>>>'
>>>>
>>>>for line in `cat /etc/passwd` ; do
>>>> ACCOUNT=`echo "$line" | awk -F ":" '{print $1}'`
>>>> UID=`echo "$line" | awk -F ":" '{print $3}'`
>>>> GID=`echo "$line" | awk -F ":" '{print $4}'`
>>>> HOMEDIR=`echo "$line" | awk -F ":" '{print $6}'`
>>>>
>>>> if [ $UID -ge 500 ] ; then
>>>> echo "account : $ACCOUNT , $UID:GID $HOMEDIR"
>>>> fi
>>>>
>>>>done
>>>>
>>>>------------------
>>>>
>>>>위의 스크립트를 수정해서 사용해 보세요
>>>
>>>========================================
>>
>>========================================
>
>========================================
======================================== |