Я сам не мастер bash, поэтому будут любые способы улучшить это (я адаптировал пример, который я нашел в Интернете), но вот простой пример.
Чтобы сгруппировать обращения в сеансы (если применимо), вам нужен идентификатор клиента. Идентификатор клиента является обязательным параметром, но если вы хотите регистрировать каждую строку из вашего файла как новую сессию, вы можете использовать случайное число для параметра cid.
Однако в примере предполагается, что первый столбец в вашем CSV-файле содержит параметр, который можно использовать как cid. Имейте в виду, что сессия имеет максимум 500 обращений (поэтому после этого вам нужно переключить cid) и что существует ограничение в 20 обращений за сеанс, которое пополняется со скоростью 2 обращения в секунду, поэтому, вероятно, вы хотите встроить задержку в свой сценарий.
В примере предполагается файл csv с точкой с запятой в качестве разделителя (можно настроить в переменной IFS). Также предполагается наличие трех столбцов: один для cid, один для пути к странице и один для заголовка документа. если у вас более трех столбцов, последнее значение (pagetitle) будет потреблять все оставшиеся столбцы (поэтому, если столбцов больше трех, добавьте имена столбцов в строку, начинающуюся с «пока»).
Затем скрипт просто строит URL-адрес (переменные из строки, начинающейся с «пока», обозначаются знаком доллара перед именем) и использует wget для вызова сервера отслеживания Google (сервер возвращает изображение в формате gif, которое wget будет store - я уверен, что есть опция, которая говорит wget отклонить контент из запроса).
#!/bin/bash
UAID="UA-XXXXX-XX" // Google Analytics Account ID
INPUT=data.cvs // Input file name
OLDIFS=$IFS // store default csv delimiter
IFS=; // set csv delimiter
[ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; } // nice error message if input file is missing
while cid page pagetitle // while there are rows in the csv read fields
do
wget "www.google-analytics.com/collect?v=1&tid=$UAID&cid=$cid&t=pageview&dp=$page&dt=$pagetitle" // call Google Tracking server
done < $INPUT // no more rows
IFS=$OLDIFS // restore default csv delimiter
Очевидно, вам придется сделать этот скрипт исполняемым. Я тестировал это (последний Debian/bash), поэтому я уверен, что это сработает. Хотя это может быть не очень эффективно.
person
Eike Pierstorff
schedule
28.10.2014