산이님께...
가르쳐 주신 스크립트 부분중에 마지막부분에 에러가
나는데요.
아마도 여기가 에러인것같습니다.
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
>>>
>>>------------------
>>>
>>>위의 스크립트를 수정해서 사용해 보세요
>>
>>========================================
>
>========================================
========================================
|