Files
RFB/RUN.sh
Alexey Barabanov ca7cd72b74 SH update
2025-10-20 18:43:53 +03:00

102 lines
3.3 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
show_help() {
echo "Использование: $0 -t <домашняя команда>"
echo " -t Домашняя команда"
echo " -h Показать эту справку"
echo ""
echo "Пример: $0 -t \"cska\""
exit 0
}
# Определение IP адреса
if [[ "$(uname -s)" != "Darwin" ]]; then
ip_address=$(ip a 2>/dev/null | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1' | head -n1)
else
ip_address=$(ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1' | head -n1)
fi
echo "IP: $ip_address"
# База данных хостов в виде пар IP-команда
hosts=(
"10.10.35.21:cska"
"10.10.35.22:Kuban"
"10.10.35.23:uralmash"
"10.10.35.24:betcity parma"
"10.10.35.25:avtodor"
"10.10.35.26:zenit"
"10.10.35.27:samara"
"10.10.35.28:mba-mai"
"10.10.35.29:Pari Nizhny Novgorod"
"10.10.35.30:unics"
)
# Определение команды по IP
detected_team=""
for host in "${hosts[@]}"; do
host_ip="${host%%:*}"
host_team="${host#*:}"
if [[ "$ip_address" == "$host_ip" ]]; then
detected_team="$host_team"
break
fi
done
# Обработка аргументов командной строки
team=""
while getopts "t:h" opt; do
case $opt in
t) team="$OPTARG" ;;
h) show_help ;;
*) echo "Неверный аргумент"; exit 1 ;;
esac
done
# Определение финальной команды (приоритет у аргумента, затем у автоопределения)
if [[ -n "$team" ]]; then
final_team="$team"
echo "Используется команда из аргумента: $final_team"
elif [[ -n "$detected_team" ]]; then
final_team="$detected_team"
echo "Используется автоопределенная команда: $final_team"
else
echo "Ошибка: Не удалось определить команду. Укажите явно через -t или проверьте IP адрес"
echo "Доступные команды:"
for ip in "${!hosts[@]}"; do
echo " $ip: ${hosts[$ip]}"
done
exit 1
fi
# Проверка существования файлов
if [[ ! -f "$(pwd)/.venv/bin/streamlit" ]]; then
echo "Ошибка: streamlit не найден в $(pwd)/.venv/bin/streamlit"
exit 1
fi
if [[ ! -f "$(pwd)/visual.py" ]]; then
echo "Ошибка: visual.py не найден в $(pwd)/visual.py"
exit 1
fi
if [[ ! -f "$(pwd)/get_data.py" ]]; then
echo "Ошибка: get_data.py не найден в $(pwd)/get_data.py"
exit 1
fi
#Запуск сбора данных
echo "Запуск get_data.py..."
"$(pwd)/.venv/bin/python $(pwd)/get_data.py" --team "$final_team" &
# Небольшая задержка перед запуском второго процесса
sleep 2
# Запуск веб-морды
echo "Запуск приложения для команды: $final_team"
echo "Запуск streamlit..."
"$(pwd)/.venv/bin/streamlit" run "$(pwd)/visual.py"
# Ожидание завершения процессов
echo "Оба процесса запущены. Для остановки нажмите Ctrl+C"
wait