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#
- Utwórz i zapisz skrypt
Zapisz skrypt Bashapoally-insights-upload.shw wybranym katalogu, np./usr/local/bin/.
- Ustaw uprawnienia do wykonywania
Upewnij się, że skrypt jest wykonywalny:
- Skonfiguruj klucz API
Otwórz skrypt i zastąpYOUR-API-KEYswoim rzeczywistym kluczem API.
Zmień linię:
Zapisz i zamknij plik.
- Utwórz zadanie Cron
Aby skrypt był wykonywany regularnie (nie częściej niż co 15 minut), utwórz zadanie Cron:
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.
- 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:
- Test działania
Uruchom skrypt ręcznie, aby upewnić się, że wszystko zostało poprawnie skonfigurowane:
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.