자동화 작업
2023년 6월 19일
자동으로 커밋하기 #
두개를 켜놓고 작업하다가 이전버전의 터미널에서 :wq 를 입력할뻔 했기 때문에 자동 커밋 스크립트를 만들게 됐다.
커밋 스크립트 작성 #
/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$ chmod 777 /home/dongkim/autocommit.sh
6시간마다 스크립트 실행 #
- cron 설치
1$ sudo apt-get install cron
- cron 설정
1$ crontab -e
20 */6 * * * /home/dongkim/autocommit.sh
- cron 실행
1$ sudo cron
2$ service cron status
타임존 설정 #
커밋 메시지에 포함되는 시간을 KST로 변경하고 싶을때 적용
- tzdata 설치
1$ sudo apt-get install tzdata
- 원하는 타임존 설정
게시글 생성 스크립트 #
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