자동화 작업

자동화 작업

2023년 6월 19일

자동으로 커밋하기 #

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

커밋 스크립트 작성 #

  1. /home/dongkim/autocommit.sh 스크립트 작성
 1#!/bin/bash
 2
 3# 변수 설정
 4TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
 5MESSAGE="${1:-[$TIMESTAMP] Auto commit}"
 6
 7# 작업 디렉토리로 이동
 8cd /home/dongkim/site
 9
10# Git 작업 수행
11git pull
12git add .
13git commit -m "$MESSAGE"
14git push
15git push github
16
17echo "작업 완료"
  1. 실행권한 부여
1$ chmod 777 /home/dongkim/autocommit.sh

6시간마다 스크립트 실행 #

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

타임존 설정 #

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

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

게시글 생성 스크립트 #

v0.1 (2023/12/10)

 1#!/bin/bash
 2
 3# 이전에 편집한 파일 이름을 저장할 파일
 4backup_file=".hugocmd_bak"
 5
 6# 스크립트에 '-1' 인자가 전달된 경우 마지막으로 편집한 파일을 열기
 7if [ "$1" == "-1" ]; then
 8    if [ -f "$backup_file" ]; then
 9        last_edited_file=$(cat "$backup_file")
10        if [ -f "$last_edited_file" ]; then
11            vi "$last_edited_file"
12            exit 0
13        else
14            echo "Error: The last edited file does not exist."
15            exit 1
16        fi
17    else
18        echo "No previously edited file found."
19        exit 1
20    fi
21fi
22
23while true; do
24clear
25echo "[ Contents Entry ]"
26postdir="posts"
27basedir="content/${postdir}"
28
29tree -d ${basedir}
30
31echo "operation: create(c), listdir(ls), rmfile(rm), Quit(Q)"
32read op
33
34case $op in
35    c)
36        echo "cmd) Create Content"
37        echo "choose directory: "
38        read path
39        echo "===== Directories ====="
40        ls -la ${basedir}/${path}
41        echo "======================="
42
43        echo "choose filename. current: ${basedir}/${path}: "
44        read filename
45        break
46        ;;
47    ls)
48        echo "cmd) Show Directory"
49        echo "choose directory: "
50        read path
51
52        clear
53        echo "===== Directories ====="
54        ls -la ${basedir}/${path}
55        echo "======================="
56        ;;
57    rm)
58        echo "cmd) Remove File"
59        echo "choose directory: "
60        read path
61
62        echo "===== Directories ====="
63        ls -l ${basedir}/${path}
64        echo "======================="
65        echo "choose filename. current: ${basedir}/${path}: "
66        read filename
67        if [ ! -d trashcan ]; then
68            mkdir -p trashcan
69            echo "Directory \"trashcan\" created successfully."
70        fi
71        mv ${basedir}/${path}/${filename} trashcan
72        echo "move to trashcan!"
73        ;;
74    Q)
75        echo "QUIT"
76        exit 1
77        ;;
78    *)
79        echo "Invalid operation"
80        ;;
81esac
82echo "Press Any Key"
83read key
84
85done
86
87
88cmd="hugo new ${postdir}/${path}/${filename}.md"
89echo "run ${cmd}"
90$cmd
91
92openfile=${basedir}/${path}/${filename}
93echo "${openfile}" > $backup_file
94
95vi ${openfile}

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

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

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

 1# root 계정으로 변경
 2sudo su
 3
 4# bashrc 파일을 vim으로 열기
 5cd ~
 6vi .bashrc
 7
 8# .bashrc  
 9# ... 이전 스크립트 내용 ...
10# ssh 켜두기
11service ssh start
12# cron 켜두기
13cron
14service cron status
15# hugo server 켜두기
16cd /home/dongkim/site
17nohup /home/dongkim/GoProjects/bin/hugo server --liveReloadPort=443 --bind=0.0.0.0 > /home/dongkim/site/nohup.out &
18# alias 설정
19alias hugocmd=$HOME/site/create_content.sh
comments powered by Disqus