스크립트로 본딩하기

 

-스크립트내용-

#!/bin/bash

N_DIR=/etc/sysconfig/network-scripts/
read -p "device_name : " device
read -p "IPADDR : " IP
read -p "NETMASK : " NETMASK
read -p "GATEWAY : " GATEWAY

cp ${N_DIR}ifcfg-${device}0 ${N_DIR}${device}0.back
cp ${N_DIR}ifcfg-${device}1 ${N_DIR}${device}1.back

echo "DEVICE=${device}0" > ${N_DIR}ifcfg-${device}0
echo "TYPE=Ethernet" >> ${N_DIR}ifcfg-${device}0
echo "ONBOOT=yes" >> ${N_DIR}ifcfg-${device}0
echo "NM_CONTROLLED=no" >> ${N_DIR}ifcfg-${device}0
echo "BOOTPROTO=none" >> ${N_DIR}ifcfg-${device}0
echo "SLAVE=yes" >> ${N_DIR}ifcfg-${device}0
echo "MASTER=bond0" >> ${N_DIR}ifcfg-${device}0


echo "DEVICE=${device}1" > ${N_DIR}ifcfg-${device}1
echo "TYPE=Ethernet" >> ${N_DIR}ifcfg-${device}1
echo "ONBOOT=yes" >> ${N_DIR}ifcfg-${device}1
echo "NM_CONTROLLED=no" >> ${N_DIR}ifcfg-${device}1
echo "BOOTPROTO=none" >> ${N_DIR}ifcfg-${device}1
echo "SLAVE=yes" >> ${N_DIR}ifcfg-${device}1
echo "MASTER=bond0" >> ${N_DIR}ifcfg-${device}1



echo "DEVICE=bond0" > ${N_DIR}ifcfg-bond0
echo "TYPE=Ethernet" >> ${N_DIR}ifcfg-bond0
echo "ONBOOT=yes" >> ${N_DIR}ifcfg-bond0
echo "NM_CONTROLLED=no" >> ${N_DIR}ifcfg-bond0
echo "BOOTPROTO=static" >> ${N_DIR}ifcfg-bond0
echo "USERCTL=no" >> ${N_DIR}ifcfg-bond0
echo "IPADDR=${IP}" >> ${N_DIR}ifcfg-bond0
echo "NETMASK=${NETMASK}" >> ${N_DIR}ifcfg-bond0
echo "GATEWAY=${GATEWAY}" >> ${N_DIR}ifcfg-bond0
echo "BONDING_MASTER=yes" >> ${N_DIR}ifcfg-bond0

echo "alias bond0 bonding" > /etc/modprobe.d/bonding.conf
echo "options mode=1 miimon=100" >> /etc/modprobe.d/bonding.conf

 

-스크립트실행시-

device_name 쪽은 장치명을 적습니다. [ ex ) eth ]

IPADDR 쪽은 bond에 들어갈 ip주소를 적습니다. [ ex ) 192.168.189.10 ]

NETMASK 쪽은 NETMASK를 적습니다 [ ex ) 255.255.255.0 ]

GATEWAY 쪽은 GATEWAY IP를 적습니다 [ ex ) 192.168.189.254 ]

[root@centos6 ~]# sh bonding.sh
device_name : eth
IPADDR : 192.168.189.10
NETMASK : 255.255.255.0
GATEWAY : 192.168.189.254
[root@centos6 ~]# service network restart

 

-스크립트 실행후 확인-

bond0으로 IP올라온것 확인가능

기존의 네트워크 설정은 네트워크 설정 경로의 .back파일로 만들어집니다. [ ex ) eth0.back , eth1.back ]

[root@centos6 ~]# ifconfig
bond0     Link encap:Ethernet  HWaddr 08:00:27:77:7A:F5
          inet addr:192.168.189.10  Bcast:192.168.189.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe77:7af5/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:73 errors:0 dropped:0 overruns:0 frame:0
          TX packets:62 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:9587 (9.3 KiB)  TX bytes:10370 (10.1 KiB)

eth0      Link encap:Ethernet  HWaddr 08:00:27:77:7A:F5
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:1016 errors:0 dropped:0 overruns:0 frame:0
          TX packets:629 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:86154 (84.1 KiB)  TX bytes:66298 (64.7 KiB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:77:7A:F5
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:5 errors:0 dropped:0 overruns:0 frame:0
          TX packets:34 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:300 (300.0 b)  TX bytes:4864 (4.7 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:28 errors:0 dropped:0 overruns:0 frame:0
          TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2180 (2.1 KiB)  TX bytes:2180 (2.1 KiB)

 

가끔식 네트워크 시작이 0이아닌 1로 되는 경우도있으니 상황에 따라 수정해주세요

 

 

[환경]

centos6

호스트 1 - test-active

호스트 2 - test-standby

 

heartbeat을 이용한 이중화 하기

참고로 cent7부터는 heartbeat을 이용하지 않습니다.

 

 

1.heartbeat 설치 ( 아래 명령어 순서대로 입력 )

- wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

- rpm -ivh epel-release-latest-6.noarch.rpm

- sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/epel.repo

- yum --enablerepo=epel -y install heartbeat

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm                                                                      --2020-05-31 20:27:20--  https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
Resolving dl.fedoraproject.org... 209.132.181.23, 209.132.181.24, 209.132.181.25
Connecting to dl.fedoraproject.org|209.132.181.23|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14540 (14K) [application/x-rpm]
Saving to: `epel-release-latest-6.noarch.rpm'

100%[==================================================================================================================================================================

2020-05-31 20:27:21 (95.8 KB/s) - `epel-release-latest-6.noarch.rpm' saved [14540/14540]

[root@test-active ~]# rpm -ivh epel-release-latest-6.noarch.rpm
경고: epel-release-latest-6.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
준비 중...               ########################################### [100%]
   1:epel-release           ########################################### [100%]
[root@test-active ~]# sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/epel.repo
[root@test-active ~]# yum --enablerepo=epel -y install heartbeat

 

2.heartbeat 설정 복사

- cp /usr/share/doc/heartbeat-*/ha.cf /etc/ha.d/

- cp /usr/share/doc/heartbeat-*/authkeys /etc/ha.d/

- cp /usr/share/doc/heartbeat-*/haresources /etc/ha.d/

[root@test-active ~]# cp /usr/share/doc/heartbeat-*/ha.cf /etc/ha.d/
[root@test-active ~]# cp /usr/share/doc/heartbeat-*/authkeys /etc/ha.d/
[root@test-active ~]# cp /usr/share/doc/heartbeat-*/haresources /etc/ha.d/

 

3.1. heartbeat 설정(authkeys)

- authkeys 파일은 서로간의 키를 맞춰주는 설정 파일이다. 서로 동일하게 입력하면 된다.

 

- vi /etc/ha.d/authkeys  (아래는 예시이며 원하는 키 입력)

#       methods and/or keys.
#
#
#       sha1 is believed to be the "best", md5 next best.
#
#       crc adds no security, except from packet corruption.
#               Use only on physically secure networks.
#
#auth 1
#1 crc
#2 sha1 HI!
#3 md5 Hello!

auth 2
2 sha1 mogi

3.2. heartbeat 설정 (ha.cf)

- ha.cf 파일은 heartbeat 구동방식에대한 전반적인 설정을 하는 파일이다.

 

- vi /etc/ha.d/ha.cf (아래는 예시이며 원하는 대로 설정)

debugfile /var/log/ha-debug.log   #디버그 로그 경로 설정
logfile /var/log/ha.log           #로그 경로 설정
keepalive 2                       #상대 노드에 신호 보내는 시간텀
deadtime 15                       #상대노드가 죽었다고 판단하는 시간
auto_failback off				  #스탠바이가 기동중일때 액티브가 복구되면 자동으로 active로 vip가 넘어갈지 설정
ucast eth0 192.168.131.3          #신호 보낼 경로
node test-active                  #master node설정
node test-standby                 #slave noede 설정
udpport 694						  #신호보낼 port 설정

 

리눅스 + 파이썬 이용해서 메일 보내는 방법이다.

 

- 우선 리눅스에서 아무이름으로 아래 내용처럼 .py파일을 만들어준다

#!/usr/bin/python
# -*- coding: utf-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders


# 아이디 비밀번호 정보
email_from = '???@naver.com'		#보내는이 메일주소
email_to = '94.mogi@gmail.com'	#받는이 메일주소
naver_id ='????'					#네이버 아이디 입력
naver_pass = 'qwe123!@#'			#패스워드 입력

# 제목 입력
subject = '테스트 메일'

msg = MIMEMultipart()
msg['From'] = email_user
msg['To'] = email_send
msg['Subject'] = subject

# 본문 내용 입력
body = '테스트 메일입니다.'
msg.attach(MIMEText(body,'plain'))

#첨부 파일 보내기
filename='aa.txt'		#첨부 파일 이름 이처럼 이름만쓰려면 같은 경로에 파일있어야됨 아니면 절대경로입력
attachment  =open(filename,'rb')

part = MIMEBase('application','octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition',"attachment; filename= "+filename)
msg.attach(part)


text = msg.as_string()
server = smtplib.SMTP('smtp.naver.com',587)		#네이버 smtp서버 지정
server.starttls()
server.login(naver_id,naver_pass)

server.sendmail(email_from,email_to,text)
server.quit()
~

 

- 아래 이미지를 보면 test.py 랑 aa.txt 파일이 있다 ./test.py 명령어를 통해 실행시켜주면 메일발송

- './파일이름' 방식으로 실행시키는데 권한이 없어서 안될수도 있다 그럴땐 'chmod +x 파일명' 명령어로 실행권한을 추가해준다

 

- 지메일 확인시 메일 도착한걸 확인할수 있다.

 

- 이후 crontab -e 명령어를 통해 아래와 같이 매일 오전 9시에 실행시키게 하면 매일 자동발송 가능

crontab -e
00 09 * * * ./tmp/test.py

 

 

 

혹시나 위와같이 했는데 메일이 전송 안된다면 네이버 메일에 smtp 허용이 되어 있는지 확인이 필요하다

네이버 메일 설정쪽에서 smtp 사용함으로 설정후 확인하면됨 아마 허용되있는게 디폴트값이였던것같다.

[환경]

cent 7

 

쉘 스크립트를 이용해서 주기적으로 DB백업하는 스크립트 예제

#!/bin/bash

DT=`date '+%Y%m%d'`
BACK_DIR='/tmp/BACKUP'

#BACKUP 디렉터리가 없을경우 디렉터리 생성
if [ ! -d ${BACK_DIR} ]
then
        mkdir ${BACK_DIR}
fi

#BACKUP 디렉터리로 'test'라는 이름의 DB내용 백업 에러로그는 DB_BACK.log 라는 파일로 전송
mysqldump -uroot -pqwe123!@# test > ${BACK_DIR}/${DT}testDB_BACK.sql 2> /tmp/DB_BACK.log

#BACKUP 경로의 sql확장자 가진 파일중 5일이상 지난파일은 삭제
find ${BACK_DIR} -name '*.sql' -mtime +5 -exec rm -f {} \;

 

위와 같이 생성후 crontab에 매일 돌아가도록 설정하면 끝.

-매일 새벽 1시 30분마다 스크립트 실행

30 01 * * * /tmp/db_backup.sh

 

스크립트 실행시 아래와 같이 파일 생성된것 확인가능

[root@localhost BACKUP]# pwd
/tmp/BACKUP
[root@localhost BACKUP]# ll
합계 4
-rw-r--r--. 1 root root 796  5월 11 01:35 20200511testDB_BACK.sql

 

[환경]

centos7

 

서버를 운영하다보면 예전에 자신이 어떠한 명령어를 입력했었는지 혹은 다른 사람이 서버에 접속하여

무슨 작업을 했었는지 알아야 할 때가 있다.

특히 여러명이 다같이 관리하는 서버라면 꼭 해당 서버에 입력된 명령어들을 로그로 기록해두는것이 좋다.

안해뒀다가 괜히 덤탱이 쓰는 경우도 있기 때문에 항상 기록하는걸 추천한다.

커맨드를 기록하게 하는 방법은 아래와 같다.

 

 

1. /etc/profile 수정

- /etc/profile에 아래와 같이 내용을 추가한다

# Add timestamp to .bash_history
    HISTTIMEFORMAT="%Y-%m-%d_%H:%M:%S "
    export HISTTIMEFORMAT

function history_to_syslog {
declare command
remoteaddr="`who am i`"
pwd="`pwd`"
command=$(fc -nl 0 | cut -b3-)
if [ "$command" != "$old_command" ]; then
logger -p local2.notice -t bash -i "user : $USER    Command : $command    Directory : $pwd"
fi
old_command=$command
}
trap history_to_syslog DEBUG

-이후 source /etc/profile 명령어를 통해 profile을 다시 적용

 source /etc/profile

 

 

2. syslog 설정 추가

- /etc/rsyslog.conf 파일에 아래 내용 추가 ( 리눅스 버전마다 이름은 다를수있음)

# Log cron stuff
cron.*                                                  /var/log/cron

# Everybody gets emergency messages
*.emerg                                                 :omusrmsg:*

# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler

# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log
local2.notice                                           /var/log/cmd.log    <이부분 추가

-syslog 재시작

systemctl restart rsyslog

 

 

3. 로그 확인

- /var/log/cmd.log

https://mobaxterm.mobatek.net/

 

MobaXterm free Xserver and tabbed SSH client for Windows

The ultimate toolbox for remote computing - includes X server, enhanced SSH client and much more!

mobaxterm.mobatek.net

 

putty와 같은 원격 접근 프로그램으로 유료버전과 무료버전이 나뉘어있는데

무료버전도 나름 괜찮다

 

왼쪽이 무료 오른쪽이 유료버전 기능설명인데

무료버전도 쓸만한 기능들 많이지원을 한다

 

유용한 기능으로는

multiexec 기능과 sftp 기능이 있다

 

multiexec 기능

multiexec는 위 이미지처럼 여러대의 서버에 똑같은 명령어를 입력할 수 있기때문에 다중서버에 동일한 작업이 필요할때 사용하기 편하다

 

sftp 기능

sftp 기능은 winscp와 같이 서버에 파일 업/다운로드를 할 수 있는 기능이다

서버에 파일 업로드 하겠다고  winscp 나 파일질라같은걸 킬필요없어서 굉장히 편하다

(putty + winscp)라고 보면됨

 

 

 

항상 putty만 이용하다 무료 ssh프로그램중에 쓸만한게 없나 찾아봤었는데 무료치고 굉장히 좋아서 계속 이용중..

-사전준비-

버추얼박스

centos7 이미지

 

 

1.설치 시작화면에서 'Install CentOS7'선택 후 엔터

 

 

2.언어 선택화면에서 '한국어' 선택 후 '계속 진행'

 

 

3.설치 옵션 선택화면으로 '시스템' - '설치 대상' 클릭

 

 

4.현재 서버에 구성되어 있는 디스크 선택후 '완료' 클릭

#파티션을 별도로 나누고 싶을시에는 '기타 저장소 옵션'에서 '파티션을 설정합니다'옵션 선택

 

 

5.'4'와 같이 디스크 선택 후 이전 설치옵션 화면에서 '설치 시작'버튼을 클릭하면 이와같은 화면이 보이며 'ROOT암호' 클릭

 

 

6.'root'계정 암호 설정 화면으로 임의값 설정 후 '완료'

 

 

7.설치 완료시 아래와 같이 화면이 표시되며 '재부팅'클릭하여 서버 재부팅 진행

 

 

8.설치 완료 후 로그인 확인

-사전준비-

버추얼박스

Centos6 이미지

 

 

1.설치 시작화면에서 가장 첫줄 'Install or upgrade an existing system' 선택 후 엔터

 

 

2.설치전에 테스트를 할건지 물어보는데 안할거니까 'skip' 선택 후 엔터

 

 

3.'next'선택 후 엔터

 

 

4.사용할 언어 선택하는 화면으로 'korean(한국어)'선택 후 'next'

 

 

5.사용할 키보드 선택하는 화면으로 기본 키보드인 'U.S. 영어'선택 후 '다음(N)'

 

 

6. 저장 장치 고르는 화면(DISK)로 '기본 저장 장치' 선택 이후 '다음(N)'

 

 

7.현재 OS를 설치할 디스크 포맷이 필요하므로 '예,모든 데이터를 삭제합니다'선택

 

 

8.서버의 hostname 설정하는 화면으로 임의값 지정

 

 

9.서버 시간설정으로 '아시아/서울' 선택

 

 

10.서버에 생성되는 관리자계정(root) 패스워드 설정하는 화면으로 임의값 설정

#단순한 암호선택시 추측하기 쉬운암호라는 경고창뜨나 '어쨌든 사용' 선택시 사용됨

 

 

11.디스크 파티션을 설정할 수 있는 화면으로 임의지정시 '사용자 레이아웃 만들기' 선택하면되나

자동으로 설정되도록 '모든 공간 사용'으로 선택

 

 

12.'모든 공간 사용' 선택시 나오는 화면으로 바로 '다음' 선택

 

 

13.파티션 포맷하는 화면으로 '포맷'클릭

 

 

14.'디스크에 변경사항 기록' 클릭

 

 

15.부트로더 선택 화면으로 기본값 그대로 '다음' 클릭

 

 

16.설치모드 설정하는 화면으로 아래와 같이 구성되어 있음

일반적으로

Desktop - 서버 + GUI화면구성

Basic Server - 베이직 서버 (가장기본적인 서버구성)

Minimal - 최소설치서버 (최소한의 필요구성만 포함)

이렇게 세가지로 설치하는 경우가 많으며

원하는 구성으로 선택 후 '다음' 클릭

 

 

17.설치 로딩화면

 

 

18.설치 완료 후 로그인 확인

 

 

 

+ Recent posts