#!/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