-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathsetup_hackmasterpi.sh
More file actions
executable file
·105 lines (85 loc) · 2.55 KB
/
setup_hackmasterpi.sh
File metadata and controls
executable file
·105 lines (85 loc) · 2.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#!/bin/bash
# 顯示執行步驟訊息的函數
log() {
echo -e "\e[1;34m[INFO]\e[0m $1"
}
error() {
echo -e "\e[1;31m[ERROR]\e[0m $1"
}
success() {
echo -e "\e[1;32m[SUCCESS]\e[0m $1"
}
# 獲取絕對路徑
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
APP_DIR="$SCRIPT_DIR/app"
ENV_DIR="$SCRIPT_DIR/app/env"
# 檢查是否為 root 用戶
if [ "$EUID" -ne 0 ]; then
error "請使用 sudo 執行此腳本"
exit 1
fi
# 檢查 app 目錄是否存在
if [ ! -d "$APP_DIR" ]; then
error "找不到應用程式目錄: $APP_DIR"
exit 1
fi
# 檢查虛擬環境目錄是否存在
if [ ! -d "$ENV_DIR" ]; then
error "找不到虛擬環境目錄: $ENV_DIR"
log "正在創建虛擬環境..."
python3 -m venv "$ENV_DIR"
if [ ! -d "$ENV_DIR" ]; then
error "無法創建虛擬環境。請手動創建並安裝依賴。"
exit 1
else
success "虛擬環境創建成功"
fi
fi
sudo apt-get install -y python3-bluez
${ENV_DIR}/bin/pip3 install -r ${APP_DIR}/requirements.txt
# 檢查 main.py 是否存在
if [ ! -f "$APP_DIR/main.py" ]; then
error "找不到 $APP_DIR/main.py 檔案"
exit 1
fi
# 為 main.py 添加執行權限
chmod +x "$APP_DIR/main.py"
success "已為 main.py 設置執行權限"
# 創建 systemd 服務檔案
SERVICE_FILE="/etc/systemd/system/hackmaster-pi.service"
log "正在創建 systemd 服務檔案..."
cat > "$SERVICE_FILE" << EOL
[Unit]
Description=HackMaster Pi Application
After=network.target
[Service]
ExecStartPre=/bin/systemctl stop ssd1306-boot-logo.service
ExecStart=/bin/bash -c 'cd ${APP_DIR} && sudo ${ENV_DIR}/bin/python3 main.py'
WorkingDirectory=${APP_DIR}
Restart=always
User=root
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target
EOL
# 重載 systemd 配置
log "正在重載 systemd 配置..."
systemctl daemon-reload
# 啟用服務
log "正在啟用 HackMaster Pi 服務..."
systemctl enable hackmaster-pi.service
# 啟動服務
log "正在啟動 HackMaster Pi 服務..."
systemctl start hackmaster-pi.service
# 檢查服務狀態
sleep 2
if systemctl is-active --quiet hackmaster-pi.service; then
success "HackMaster Pi 服務已成功啟動!"
log "您可以使用以下命令檢查服務狀態:"
log " sudo systemctl status hackmaster-pi.service"
else
error "HackMaster Pi 服務啟動失敗。請檢查日誌:"
log " sudo systemctl status hackmaster-pi.service"
log " sudo journalctl -u hackmaster-pi.service"
fi
success "設置完成!Raspberry Pi 將在每次開機時自動執行應用程式。"