Przejdź do treści

Konfiguracja ApoAlly Insights#

Debian/Ubuntu#

Bash Upload-Script
apoally-insights-upload.sh
#!/bin/bash
# upload_csv.sh
#
# Ten skrypt automatycznie wyszukuje opcjonalny plik schematu (.json lub .csvs)
# o tej samej nazwie bazowej co plik CSV/TSV. JSON ma priorytet nad CSVS, jeśli oba istnieją.
# Jeśli nie znaleziono pliku schematu, przesyłany jest tylko plik CSV/TSV. Jeśli podano katalog,
# skrypt przetwarza wszystkie pliki .csv i .tsv w nim (rekurencyjnie), każdy z opcjonalnym plikiem schematu.
#
# Użycie:
#   ./upload_csv.sh <ścieżka_do_pliku_csv_lub_tsv_lub_katalogu>
#
# Zmienne środowiskowe:
#   API_URL - URL punktu końcowego przesyłania CSV (domyślnie: https://api.apoally.de/insights/upload)
#   API_KEY - Klucz API używany do uwierzytelniania (domyślnie: YOUR-API-KEY)

API_URL="https://api.apoally.de/insights/upload"
API_KEY="YOUR-API-KEY"

# Sprawdź, czy podano dokładnie jeden argument
if [ "$#" -ne 1 ]; then
    echo "Użycie: $0 <ścieżka_do_pliku_csv_lub_tsv_lub_katalogu>"
    exit 1
fi

TARGET="$1"

function upload_single_file() {
    local file_path="$1"
    local base="${file_path%.*}"

    # Wykryj opcjonalny plik schematu o tej samej nazwie bazowej
    local schema_file=""
    if [ -f "${base}.json" ]; then
        schema_file="${base}.json"
    elif [ -f "${base}.csvs" ]; then
        schema_file="${base}.csvs"
    fi

    echo "Przesyłanie pliku: $file_path"
    if [ -n "$schema_file" ]; then
        echo "Znaleziono opcjonalny plik schematu: $schema_file"
        curl -X POST \
             -H "X-API-Key: $API_KEY" \
             -F "files=@${file_path}" \
             -F "files=@${schema_file}" \
             "$API_URL"
    else
        # Brak pliku schematu, przesyłanie tylko pliku CSV/TSV
        curl -X POST \
             -H "X-API-Key: $API_KEY" \
             -F "files=@${file_path}" \
             "$API_URL"
    fi
    echo
}

# Jeśli TARGET jest plikiem, przesyłaj go i jego opcjonalny schemat
if [ -f "$TARGET" ]; then

    # Wyodrębnij rozszerzenie i zezwól na .csv i .tsv
    extension="${TARGET##*.}"
    if [ "$extension" != "csv" ] && [ "$extension" != "tsv" ]; then
        echo "Błąd: '$TARGET' nie jest plikiem .csv ani .tsv."
        exit 1
    fi

    upload_single_file "$TARGET"

# Jeśli TARGET jest katalogiem, przetwarzaj wszystkie pliki .csv i .tsv w nim rekurencyjnie
elif [ -d "$TARGET" ]; then

    echo "Przetwarzanie katalogu: $TARGET"
    while IFS= read -r -d '' file; do
        upload_single_file "$file"
    done < <(find "$TARGET" -type f \( -iname '*.csv' -o -iname '*.tsv' \) -print0)

else
    echo "Błąd: '$TARGET' nie jest prawidłowym plikiem ani katalogiem"
    exit 1
fi

Instrukcja instalacji i konfiguracji#

  1. Utwórz i zapisz skrypt
    Zapisz skrypt Bash apoally-insights-upload.sh w wybranym katalogu, np. /usr/local/bin/.
sudo nano /usr/local/bin/apoally-insights-upload.sh

Wklej zawartość skryptu i zapisz plik.

  1. Ustaw uprawnienia do wykonywania
    Upewnij się, że skrypt jest wykonywalny:
sudo chmod +x /usr/local/bin/apoally-insights-upload.sh
  1. Skonfiguruj klucz API
    Otwórz skrypt i zastąp YOUR-API-KEY swoim rzeczywistym kluczem API.
sudo nano /usr/local/bin/apoally-insights-upload.sh

Zmień linię:

API_KEY="YOUR-API-KEY"

Zapisz i zamknij plik.

  1. Utwórz zadanie Cron
    Aby skrypt był wykonywany regularnie (nie częściej niż co 15 minut), utwórz zadanie Cron:
crontab -e

Dodaj następującą linię, aby uruchamiać skrypt co 15 minut:

*/15 * * * * /usr/local/bin/apoally-insights-upload.sh /path/to/your/csv_or_tsv_files >> /var/log/apoally-upload.log 2>&1

Zamień /path/to/your/csv_or_tsv_files na ścieżkę do swojego pliku lub katalogu.

  1. Sprawdź plik logu
    Wyniki działania skryptu są zapisywane w /var/log/apoally-upload.log. Regularnie sprawdzaj plik logu, aby upewnić się, że skrypt działa poprawnie:
tail -f /var/log/apoally-upload.log
  1. Test działania
    Uruchom skrypt ręcznie, aby upewnić się, że wszystko zostało poprawnie skonfigurowane:
/usr/local/bin/apoally-insights-upload.sh /path/to/your/csv_or_tsv_files

Sprawdź wynik i plik logu pod kątem błędów.

Uwagi#

  • Upewnij się, że Twój system ma stabilne połączenie z Internetem, aby dane mogły zostać pomyślnie przesłane.
  • Regularnie sprawdzaj działanie zadania Cron i pliki logów, aby upewnić się, że nie występują żadne problemy.