본문 바로가기

수업

시험준비 crontab

1-1
/var/log 안에 있는 파일들의 갯수를 구하는 명령줄 또는 스크립트를 만드세요(스크린샷)
ls -l /var/log |grep -v 합계  |awk '{ count+=1 } END {print "파일수:"count}'

1-2
/var/log 안에 있는 파일들의 총합을 구하는 명령줄 또는 스크립트를 만드세요(스크린샷)
ls -l /var/log |grep -v 합계 |awk { sum+=$5 } END {print "파일총합: " sum " byte"}'

1-3
/var/log 안에 있는 파일들의 평균값을 구하는 명령줄 또는 스크립트를 만드세요(스크린샷)
ls -l /var/log |grep -v 합계" |awk '{ sum+=$5; count+=1 } END {print "파일평균: " sum/count " byte"}'

1-4
해당내용(1-1,1-2,1-3)을 1분마다 /backup에 [시간].log 형식으로 파일이 생성될수 있도록 cron을 작성하세요

mkdir /backup


d=$(date +%Y%m%d%H%M)
echo "" >> /backup/$DATE.log
echo "$(date "+%Y년 %m월 %d일 %H시 %M분 ")" >> /backup/$d.log
echo "" >> /backup/$d.log

ls -l /var/log |grep -v 합계 |awk '{ sum+=$5; count+=1 } END { print "파일수: " count " ; print 파일총합: " sum " byte" ;print "파일평균: " sum/count " byte" }' >> /backup/$d.log

vi /etc/crontab
 */1 * * * * root /shell/1-4.sh
chmod 755 1-4.sh

sh 1-4.sh

 

[진행 전 양쪽 기본 설정 ] 
  yum install rsync -y
  yum install xinetd -y
  yum install net-tools -y
  yum install bind* -y
  service rsyncd restart
  netstat -lntup |grep rsync
  rsync 873/tcp         > 서비스 정상적으로 작동하는지 확인 
  
  firewall-cmd --permanent --add-service rsyncd    방화벽 풀기
  firewall-cmd --reload
  firewall-cmd --list-all
  (잘열렸나 확인)

2
rsync를 써서 /log/var가 원격지에 1분마다 /backup.log에 update될수 있도록 스크립트를 진행하세요 
[백업된 파일은 원본파일이 지워져도 삭제 안되야함]
환경: server 192.168.10.10 (rsync 사용)
client 192.168.10.20
rsync 허용 범위는 192.168.10.0/24 입니다
백업된 파일은 원본파일이 지워져도 삭제 안되야함
=제출내용=

2-1. rsync 설정내용 및 크론 내용
[ 클라 설정 입니다. ]
rsync 설정내용(/etc/rsyncd.conf) 
(vi 로 진입 # configuration example: 
               ㄴ 내용 아래 내용 추가 ) 
192.168.10.20  
# /etc/rsyncd: configuration file for rsync daemon mode
# See rsyncd.conf man page for more options.
# configuration example:

path=/
hosts allow=192.168.10.0/24
uid=0
gid=0ZZ

:wq 

[ 서버 설정 입니다. ] 

크론 설정내용(/etc/crontab)
(vi로 진입 제일 하단에 내용 기입) 

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
ㄴ 이 아래 기입해주시면 됩니다. 
*/1 * * * * root  sh /backup/log/sevas.sh
( 1분 마다  sevas.sh 실행 ) 



2-2. 스크립트코드 내용
(mkdir -p /backup/log 생성 > cd로 이동 안에서 vi sevas.sh 로 파일 만들어서 진행 ) 
#!/bin/bash

for i in 192.168.10.20                                                       
ㄴ 192.168.10.20 을 i에 할당
do
mkdir -p /backup/log/log_$i                               
ㄴ /backup/log/log_$i 디렉토리를 만듬  
date=$(date "+%Y-$m-%d %H시 %M분 ")  
ㄴ date에 현재 시간으로 초기화한값을 할당 
echo "" >> /backup/log/log.txt 
ㄴ 첫실행시 /backup/log/log.txt를 생성 + 실행시마다 한줄을 빈공간으로 추가   
echo "" >> /backup/log/log.txt 
ㄴ 실행시 한줄을 빈공간으로 추가 
echo "### ["$i] / ["$date"] 백업작업 ###" >> /backup/log/log.txt 
ㄴ 그다음줄에 파일이름 및 실행시킨 시간을 추가함

echo "" >> /backup/log/log.txt 
ㄴ 실행시 한줄을 빈공간으로 추가 
rsync -avz --progress $i:/var/log /backup/log/log_$i >> /backup/log/log.txt 
ㄴ 변수 i의 192.168.10.20의/var/log/*의 파일들을 /backup/log/log_$i에 복사하고 log.txt에 로그를 추가 
find /backup/log/log_$i -ctime +15 -exec rm -rf {} \;  
ㄴ /backup/log/log_$i의 속성값이 15분동안 변경이 없으면 삭제한다 (앞에있는 명령어를 실행하면 없을때 생성하고 있으면 변경하는것이기 때문에 실행안됨) 
done
---------------------------------------------------------------------------------------------------

[ 설명 없는 버전 ] 
for i in 192.168.10.20
do
mkdir -p /backup/log/log_$i

date=$(date "+%Y-%m-%d %H시 %M분")
echo "" >> /backup/log/log.txt
echo "" >> /backup/log/log.txt
echo "### [$i] / [$date] 백업작업 ###" >> /backup/log/log.txt

echo "" >> /backup/log/log.txt
rsync -avz --progress $i:/var/log/* /backup/log/log_$i >> /backup/log/log.txt
find /backup/log/log_$i -ctime +15 -exec -rm -rf {} \;
done



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


2-3. 파일이 업데이트 되는 내용 (/backup/log/log.txt 와 /backup/log/log[IP]/log ) cat로 확인하면 됨
1 : ssh-keygen -t rsa //양쪽다
ㄴ [ 키생성 명령어 ]
 service rsyncd restart
[ 치면 아래 내용 나옴 ] 
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): {ENTER} 입력
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): {ENTER} 입력
Enter same passphrase again: {ENTER} 입력 
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
SHA256:FmYMGZBQGo1v9CUoM8EYueSrgTnWpCeYaRD5mfoSn9U root@sevas20.com
The key's randomart image is:
+---[DSA 1024]----+
|.*+*o+oo         |
|=.*o= oo.        |
|o+.O . o=        |
|o.+.o .o .       |
|+==. .  S        |
|@* o. E.         |
|+*oo             |
|o +              |
| .               |
+----[SHA256]-----+

1번 cat ~/.ssh/id_rsa.pub|ssh root@192.168.10.20 "cat >> .ssh/authorized_keys"
ㄴ 192.168.10.20(클라이언트한테) 공용키를 전송 
2번 scp /root/.ssh/id_dsa.pub 192.168.10.20:/root/.ssh  
ㄴ 효과는 동일 

 

service crond restart

chmod 755 sevas.sh

'수업' 카테고리의 다른 글

Q  (0) 2023.09.06
DB  (0) 2023.08.30
시험준비  (0) 2023.08.16
실습 SSL  (0) 2023.08.11
실습 DNS FTP  (0) 2023.08.11