자동화 작업

자동으로 커밋하기

두개를 켜놓고 작업하다가 이전버전의 터미널에서 :wq 를 입력할뻔 했기 때문에 자동 커밋 스크립트를 만들게 됐다.

커밋 스크립트 작성

  1. /home/dongkim/autocommit.sh 스크립트 작성
#!/bin/bash

# 변수 설정
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
MESSAGE="${1:-[$TIMESTAMP] Auto commit}"

# 작업 디렉토리로 이동
cd /home/dongkim/site

# Git 작업 수행
git pull
git add .
git commit -m "$MESSAGE"
git push
git push github

echo "작업 완료"
  1. 실행권한 부여
$ chmod 777 /home/dongkim/autocommit.sh

6시간마다 스크립트 실행

  1. cron 설치
$ sudo apt-get install cron
  1. cron 설정
$ crontab -e
0 */6 * * * /home/dongkim/autocommit.sh
  1. cron 실행
$ sudo cron
$ service cron status

타임존 설정

커밋 메시지에 포함되는 시간을 KST로 변경하고 싶을때 적용

  1. tzdata 설치
$ sudo apt-get install tzdata
  1. 원하는 타임존 설정

게시글 생성 스크립트

v0.1 (2023/12/10)

#!/bin/bash

# 이전에 편집한 파일 이름을 저장할 파일
backup_file=".hugocmd_bak"

# 스크립트에 '-1' 인자가 전달된 경우 마지막으로 편집한 파일을 열기
if [ "$1" == "-1" ]; then
    if [ -f "$backup_file" ]; then
        last_edited_file=$(cat "$backup_file")
        if [ -f "$last_edited_file" ]; then
            vi "$last_edited_file"
            exit 0
        else
            echo "Error: The last edited file does not exist."
            exit 1
        fi
    else
        echo "No previously edited file found."
        exit 1
    fi
fi

while true; do
clear
echo "[ Contents Entry ]"
postdir="posts"
basedir="content/${postdir}"

tree -d ${basedir}

echo "operation: create(c), listdir(ls), rmfile(rm), Quit(Q)"
read op

case $op in
    c)
        echo "cmd) Create Content"
        echo "choose directory: "
        read path
        echo "===== Directories ====="
        ls -la ${basedir}/${path}
        echo "======================="

        echo "choose filename. current: ${basedir}/${path}: "
        read filename
        break
        ;;
    ls)
        echo "cmd) Show Directory"
        echo "choose directory: "
        read path

        clear
        echo "===== Directories ====="
        ls -la ${basedir}/${path}
        echo "======================="
        ;;
    rm)
        echo "cmd) Remove File"
        echo "choose directory: "
        read path

        echo "===== Directories ====="
        ls -l ${basedir}/${path}
        echo "======================="
        echo "choose filename. current: ${basedir}/${path}: "
        read filename
        if [ ! -d trashcan ]; then
            mkdir -p trashcan
            echo "Directory \"trashcan\" created successfully."
        fi
        mv ${basedir}/${path}/${filename} trashcan
        echo "move to trashcan!"
        ;;
    Q)
        echo "QUIT"
        exit 1
        ;;
    *)
        echo "Invalid operation"
        ;;
esac
echo "Press Any Key"
read key

done


cmd="hugo new ${postdir}/${path}/${filename}.md"
echo "run ${cmd}"
$cmd

openfile=${basedir}/${path}/${filename}
echo "${openfile}" > $backup_file

vi ${openfile}

도커 서버를 껐다가 켰을때 자동 환경 구성

도커 이미지에 따라 빌드할때 지정한 COMMAND나 ENTRYPOINT를 실행시키도록 할수도 있다.

현재 내 환경인 Synology NAS에서는 기본적으로 도커 서버를 켰을땐 root 계정의 bash쉘이 실행된다.
이것을 이용해서 root 계정의 .bashrc의 하단에 자동 명령어 실행을 적어두면 된다.

# root 계정으로 변경
sudo su

# bashrc 파일을 vim으로 열기
cd ~
vi .bashrc

# .bashrc  
# ... 이전 스크립트 내용 ...
# ssh 켜두기
service ssh start
# cron 켜두기
cron
service cron status
# hugo server 켜두기
cd /home/dongkim/site
nohup /home/dongkim/GoProjects/bin/hugo server --liveReloadPort=443 --bind=0.0.0.0 > /home/dongkim/site/nohup.out &
# alias 설정
alias hugocmd=$HOME/site/create_content.sh

Comments

ESC
Type to search...