Innovenergy_trunk/ModbusTCP/build_and_deploy_sodistoreh...

65 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
set -e
# --- Sodistore Home ---
REMOTE_USER="inesco"
REMOTE_HOST="10.2.5.33"
HOME_PATH="/home/inesco/SodiStoreHome"
REMOTE_BASE="/home/inesco/SodiStoreHome/ModbusTCP"
# --- Sodistore Max ---
# REMOTE_USER="ie-entwicklung"
# REMOTE_HOST="10.2.5.25"
# HOME_PATH="/home/ie-entwicklung/salimax"
# REMOTE_BASE="/home/ie-entwicklung/salimax/ModbusTCP"
REMOTE_DIST="$REMOTE_BASE/dist"
SERVICE_NAME="ModbusTCP.service"
PYTHON_FILE="modbus_tcp_server.py"
SERVICE_FILE="ModbusTCP.service"
BINARY_NAME="modbus_tcp_server"
# SUDO_PASSWORD="Salimax4x25"
# echo "==> Preparing Python virtual environment..."
# cd "$HOME_PATH"
# python3 -m venv venv
# source venv/bin/activate
# pip install watchdog
# pip install pymodbus==2.5.3
# pip install pyinstaller
# deactivate
# echo "==> Copying source file to remote..."
scp "$PYTHON_FILE" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_BASE/"
# scp "$SERVICE_FILE" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_BASE/"
echo "==> Building Python binary on remote..."
ssh "$REMOTE_USER@$REMOTE_HOST" "
cd $HOME_PATH && \
source venv/bin/activate && \
cd ModbusTCP && \
pyinstaller --onefile $PYTHON_FILE
"
echo "==> Cleaning up temporary build artifacts on remote..."
ssh "$REMOTE_USER@$REMOTE_HOST" "
cd $REMOTE_BASE && \
rm -f $PYTHON_FILE && \
rm -rf build __pycache__ *.spec
# "
echo "==> Setting up systemd service on remote..."
ssh "$REMOTE_USER@$REMOTE_HOST" "
echo '$SUDO_PASSWORD' | sudo -S cp '$REMOTE_BASE/ModbusTCP.service' /etc/systemd/system/"
echo "==> Restarting systemd service on remote..."
ssh "$REMOTE_USER@$REMOTE_HOST" "
echo '$SUDO_PASSWORD' | sudo -S setcap 'cap_net_bind_service=+ep' '$REMOTE_BASE/dist/modbus_tcp_server' && \
echo '$SUDO_PASSWORD' | sudo -S systemctl daemon-reload && \
echo '$SUDO_PASSWORD' | sudo -S systemctl enable $SERVICE_NAME && \
echo '$SUDO_PASSWORD' | sudo -S systemctl stop $SERVICE_NAME && \
echo '$SUDO_PASSWORD' | sudo -S systemctl start $SERVICE_NAME && \
echo '$SUDO_PASSWORD' | sudo -S systemctl status $SERVICE_NAME --no-pager -l
"
echo "Deployment to $REMOTE_HOST completed successfully!"