Для автоматизации понадобиться любой *nix box(у меня это FreeBSD 8.0) плюс Apache любой версии и ниже описанный скрипт (chl_url.sh) который нужно добавить в cron:
UP! сценарий не раз обновлялся, для того что бы познакомиться с последними новинками лучше ткнуть в метку USPS
#!/bin/shдумаю пару моментов нужно пояснить
wrk_dir=/root/rc/chk_url
out_fil=$wrk_dir/out_post.txt
index_t=$wrk_dir/index.temp
index_h=$wrk_dir/index.html
tmp_fil=$wrk_dir/tmp.txt
post1=RE0***227**US
post2=RB0**0*8***HK
post3=RF**83**48*GB
last_up=`date +"%Y-%m-%d @ %H:%M"`
html_head="<хтмл><хеад><тайтл>monitor $post1 | $post2 last updated: $last_up< / тайтл > < / хеад >"
html_end="< / боди >< / хтмл>"
html_hr="<хээр>"
html_br=" шесть тэгов <бээр>"
#/bin/rm -f $wrk_dir/index* $tmp_fil
echo $html_head > $index_h
/usr/local/bin/wget -N "http://info.russianpost.ru/css/data_face.css"
#######################################RUSSIAN#POST##########
/usr/local/bin/wget "http://info.russianpost.ru/servlet/post_item?action=search&searchType=barCode&show_form=yes&barCode=$post1&page=1" -O $index_t
/usr/bin/grep -i "table\|td\|tr\|STYLESHEET" $index_t | /usr/bin/grep -i -v "Dmitry\|Transitional" > $tmp_fil
/bin/cat $tmp_fil | sed -e 's/\.\.\/css\///g' >> $index_h
############################next##########USPS################
echo $html_hr >> $index_h
/usr/local/bin/wget "http://trkcnfrm1.smi.usps.com/PTSInternetWeb/InterLabelInquiry.do?strOrigTrackNum=$post1" -O $index_t
/usr/bin/grep -i "table\|tr\|td" $index_t | /usr/bin/grep -i -v "Transitional\|title>\|footNavImg\|x\.substring\|getTrackNum\|alert\|true\|format the header\|spacer\.gif\|uspsLogo\.jpg\|\.jsp\|navigation\|\.gif\|nofearact\|JavaScript\|WebTrends" >> $index_h
#############################next##########HONGKONG##POST######
echo $html_hr >> $index_h
/usr/local/bin/wget "http://app3.hongkongpost.com/CGI/mt/genresult.jsp?tracknbr=$post2&submit=Enter" -O $index_t
/usr/bin/grep -i -v "\/div\|charset=\|Bangkok\|Speedpost\|Select\|return false\|Footer\|else\|form\|form1\.country\.value\|country\|option value=\|Mail Tracking\|www\.hongkongpost\.com\|Transitional\|title\|footNavImg\|x\.substring\|getTrackNum\|alert\|true\|format the header\|spacer\.gif\|uspsLogo\.jpg\|\.jsp\|navigation\|\.gif\|nofearact\|JavaScript\|script\|FunOnSubmit\|WebTrends\|Enter\|www\.w3\.org\|}\|{" $index_t >> $index_h
#########################next##########ROYAL#MAIL##UKPOST######
echo $html_hr >> $index_h
/usr/local/bin/wget "http://www.royalmail.com/portal/rm/track?trackNumber=$post3" -O $index_t
/usr/bin/grep -i -v "DOCTYPE\|xmlns\|head\|meta\|title\|script\|link\|body\|div\|href\|img\|_validateSearch\|table\|col\|тд\|тр\|searchInput\|sitesearch\|notDisplayed\|rm_search.jspf\|\|var\|ecos\|engurl\|firstItem\|siteCatalyst\|
- " $index_t >> $index_h
########end#######
echo $html_end >> $index_h
1.
wrk_dir=/root/rc/chk_urlрабочая директория скрипта.
2.
post*это номера трекинга которые предоставляет перевозчик для посылок. Номер ессно без маски (*)
3.
всевозможные grep и sedэто фильтры удаляющие всякий мусор из страницы.
4.
wget "http://info.russianpost.ru/....это запрос к трекингу Почты России
5.
wget "http://trkcnfrm1.smi.usps.com/PTSI...это запрос к USPS здесь он представлен для примера, так как если у вас Н посылок с международным идентификаторам, вполне будет достаточно запроса из пред идущего пункта, повторив его столько раз сколько вам необходимо (сколько у вас посылок) используя соответствующий почтовый идентификатор.
6.
index_h=$wrk_dir/index.htmlindex_h содержит полный путь результирующего файла. Желательно, но не обязательно, что бы он(путь) совпадал с DocumentRoot сервера Apache. В моём случае DocumentRoot в httpd.conf указан как /var/www/html а результат работы скрипта я хочу получать в покаталоге /post/ для чего у меня стоит симлинк $index_h в DocumentRoot /post/. И для того что бы мне открыть страницу с результатом мне нужно зайти на http://адр.сервера/post/. Если же DocumentRoot настроить как /var/www/html/post то заходить нужно будет на URL http://адр.сервера/
7.
Всю порнографию вида хтмл,хеад,тайтл,боди,тег хээр,шесть тегов бээр ; нужно переписать в английский эквивалент(те html,head итд)
8.
/usr/local/bin/wget -N "http://info.russianpost.ru/css/data_face.css" так вытягивается табличка стилей для Российского трекинга (без неё таблица не таблица вовсе), затем ложиться в папку со скриптом и симлинком (ln -s) подкладывается в Apache DocumentRoot /post/. Понятное дело симлинк у меня используется потому как я любитель решений через гланды, а в более менее продакшн системах через опцию O (-O имя_файла) нужно переназначить вывод таблицы стилей туда где ей положено лежать,в моём случае это положено где то в Apache DocumentRoot /post/
9.
Для того что бы скрипт chl_url.sh выполнялся регулярно, следующую строку я добавил в /etc/crontab
30 * * * * root /root/rc/chk_url/chl_url.sh
так как у меня этот *nix box - люто изолированная тестовая среда я могу себе позволить выполнять всякую шнягу от рута, ВСЕМ ОСТАЛЬНЫМ я так делать не советую. Советую добавить соответствующую строку в crontab любого другого пользователя и дать соответствующие права на сам скрипт chl_url.sh ну и ессно положить скрипт поближе к юзеру (те в его директорию)
10.
по поводу выделенных тд и тр читать здесь
Комментариев нет:
Отправить комментарий