Показаны сообщения с ярлыком USPS. Показать все сообщения
Показаны сообщения с ярлыком USPS. Показать все сообщения

среда, 1 марта 2017 г.

Russian Post Tracking (python edition v2)

Почта Россиюшки без устали полирует свой трекинг в следствии чего я узнал что прошлый варик моего трек-скрипта ниболта не работает. Пришлось децл подправить - переписал вся что ниже
for jf in tracks 


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
for jf in tracks:
        with open(jf+".tmp") as data_file:
                data = json.load(data_file)
                data_file.close()

        barcode = data["list"][0]["trackingItem"]["barcode"]
        title = data["list"][0]["trackingItem"]["title"]
        origCN = data["list"][0]["trackingItem"]["originCountryName"]
        print jf
        trHist = data["list"][0]["trackingItem"]["trackingHistoryItemList"]
        with open(index,'a') as index_file:
                #and unicode!
                index_file.write(barcode.encode("utf-8", "ignore")+" "+title.encode("utf-8", "ignore")+"<br/> \n")
                if str(trHist) != "None":
                        ihistlen = len(trHist)
                        for k in range(0,ihistlen-1):
                                index_file.write(data["list"][0]["trackingItem"]["trackingHistoryItemList"][k]["date"]+" ")
                                index_file.write(data["list"][0]["trackingItem"]["trackingHistoryItemList"][k]["humanStatus"]+" ")
                                #unicode again!
                                description = data["list"][0]["trackingItem"]["trackingHistoryItemList"][k]["description"]
                                index_file.write(description.encode("utf-8", "ignore")+" <br/> \n")

                index_file.write("<br/> \n <br/> \n <br/> \n")
                index_file.close()
подсвечен код на hilite.me


Результат в точности повторяет предыдущий. На выходе скучнейший index.html с минимальной разметкой.

вторник, 24 января 2017 г.

Russian Post Tracking (python edition)

Продолжаем благородную и бп такую полезную тему как отслеживание посылок на Почте России. В прошлый раз это был bash + jq на этот раз python.


 import urllib3  
 import json  
 import os  
 tracks="RR271518558JP", "RL913799426NC", "LMJ71813512CN", "L0Q71954815CN", "LQ017898534CN", "RP351676848SG" , "29844602075216"  
 index = "index.html"  
 http = urllib3.PoolManager()  
 def deleteContent(fName):  
   with open(fName, "w"):  
     pass  
 pwd=os.getcwd()  
 if pwd != "/var/www/html/dash/track":  
     os.chdir("/var/www/html/dash/track")  
 #get tracks from russia post  
 for p in tracks:   
      print p  
      url="https://www.pochta.ru/tracking?p_p_id=trackingPortlet_WAR_portalportlet&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_resource_id=getList&p_p_cacheability=cacheLevelPage&p_p_col_id=column-1&p_p_col_count=1&barcodeList=" + str(p) + "&postmanAllowed=true&_=1461757915398"  
      r = http.request('GET', url)  
      f = open(p+".tmp",'w')  
      f.write(r.data)  
      f.close()  
 deleteContent(index)  
 #and parse them all  
 for jf in tracks:  
      with open(jf+".tmp") as data_file:    
             data = json.load(data_file)  
           data_file.close()  
      barcode = data["list"][0]["trackingItem"]["barcode"]  
      title = data["list"][0]["trackingItem"]["title"]  
      origCN = data["list"][0]["trackingItem"]["originCountryName"]  
      ihistlen = len(data["list"][0]["trackingItem"]["trackingHistoryItemList"])  
      with open(index,'a') as index_file:  
                index_file.write(barcode+" "+title+" <br/> \n")  
                for k in range(0,ihistlen-1):  
                     index_file.write(data["list"][0]["trackingItem"]["trackingHistoryItemList"][k]["date"]+" ")  
                     index_file.write(data["list"][0]["trackingItem"]["trackingHistoryItemList"][k]["humanStatus"]+" ")  
                     #and unicode!   
                     description = data["list"][0]["trackingItem"]["trackingHistoryItemList"][k]["description"]  
                     index_file.write(description.encode("utf-8", "ignore")+" <br/> \n")  
                index_file.write("<br/> \n <br/> \n <br/> \n")  
                index_file.close()       

на выходе получим index.html приблизительно такого вида:

 RR271518558JP Small packet from Japan   
 2016-05-06T19:06:00.000+03:00 Delivered to the addressee Moskva 122   
 2016-05-04T04:40:00.000+03:00 Available for pickup at the Post Office Moskva 122   
 2016-05-03T02:47:00.000+03:00 Departed from local distribution center Moskva MSP-34 MPKO-Tsentr Uompo   
 2016-05-01T22:22:00.000+03:00 Forwarded for delivery within Russia Mr Lts Vnukovo Tsekh-1   
 2016-04-30T11:20:00.000+03:00 Released from RF customs Mr Lts Vnukovo Tsekh-1   
 2016-04-30T11:20:00.000+03:00 Handed over to the customs Mr Lts Vnukovo Tsekh-1   
 2016-04-30T10:54:00.000+03:00 Registered Mr Lts Vnukovo Tsekh-1   
 2016-04-29T04:42:00.000+03:00 Arrived to Russian Federation Sheremetʹyevo MMPO PCI-7   
 2016-04-26T16:00:00.000+09:00 Awaiting for departure from Japan Japan   

среда, 11 мая 2016 г.

Russian Post Tracking

Russian Post Tracking Strike Back
Много воды и прочих паражняков утекло с тех пор когда я касался трэкинга почты России, Почта России здорово обновила сайт сильно упростив жизнь своим пользователям с одной стороны и усложнив с другой, подавшись модным тенденциям возвращать результат в формате json что в общем не так уж и плохо когда есть jq
jq я собрал локально для того что бы использовать последнюю версию, вместо древнего говна из сис. пакетов.

И так сам скрипт для отслеживания массива посылок:

 #!/bin/bash  
 jq=/www/html/dash/track/jq-1.5/jq  
 wrkdir=/www/html/dash/track  
 output=$wrkdir/index.html  
 echo > $output   
 tr="RR378888188JP RI916069826CN LM014443717CN LQ01153473CN LQ019679594CN RP359667345SG"  
 for i in $tr; do  
      echo $i  
      wget "https://www.pochta.ru/tracking?p_p_id=trackingPortlet_WAR_portalportlet&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_resource_id=getList&p_p_cacheability=cacheLevelPage&p_p_col_id=column-1&p_p_col_count=1&barcodeList=$i&postmanAllowed=true&_=1461757915398" -O $wrkdir/$i.html  
      $jq '.[][] .trackingItem | .barcode, .originCountryName, .title' $wrkdir/$i.html >> $output  
      echo "</br>" >> $output  
      $jq '.[][] .trackingItem | .trackingHistoryItemList[] | "\(.date) \(.humanStatus) \(.description)"' $wrkdir/$i.html >> $output  
      echo "</br>" >> $output  
      echo "</br>" >> $output  
      echo "</br>" >> $output  
 done  

запрос
wget "https://www.pochta.ru/tracking?p_p_id=trackingPortlet_WAR_portalportlet&p_p_lifecycle=2&p_p_state=normal&p_p_mode=view&p_p_resource_id=getList&p_p_cacheability=cacheLevelPage&p_p_col_id=column-1&p_p_col_count=1&barcodeList=RI916069826CN&postmanAllowed=true&_=1461757915398" -O /tmp/RI916069826CN.html  
вернёт json ответ в файл  /tmp/RI916069826CN.html 
ответ выглядит так:
 {"list":[{"officeSummary":null,"postmanDeliveryInfo":null,"formF22Params":null,"userTrackingItemId":null,"userTitle":null,"itemAddedDate":null,"deleteDate":null,"lastOperationViewed":false,"deleted":false,"autoAdded":false,"lastOperationViewedTimestamp":null,"trackingItem":{"destinationCountryName":"Россия","destinationCountryNameGenitiveCase":"России","originCountryName":"Япония","originCityName":null,"mailRank":0,"mailCtg":1,"postMark":0,"insurance":null,"isDestinationInInternationalTracking":true,"isOriginInInternationalTracking":true,"futurePathList":[],"cashOnDeliveryEventsList":null,"sender":null,"recipient"  
это только кусок ответа, на самом деле он раз в 10 больше.
Без пайтона или jq бороться с этой мешаниной скобочек и кавычек нихуя не хочется. и не можется. Поэтому мы берём jq и быстренько лепим 2 запроса
1.
 '.[][] .trackingItem | .barcode, .originCountryName, .title'  


вернёт нам:  "RI916069826CN" "Япония" "Мелкий пакет из Японии" 

2.
 '.[][] .trackingItem | .trackingHistoryItemList[] | "\(.date) \(.humanStatus) \(.description)"'  

вернёт нам сам трэк посылки:
"2016-05-06T19:06:00.000+03:00 Получено адресатом Москва 123" "2016-05-04T04:40:00.000+03:00 Ожидает адресата в месте вручения Москва 123" "2016-05-03T02:47:00.000+03:00 Покинуло сортировочный центр Москва МСП-1 МПКО-Центр Уомпо" "2016-05-01T22:22:00.000+03:00 Передано в доставку по России Мр Лц Внуково Цех-2" "2016-04-30T11:20:00.000+03:00 Прием на таможню Мр Лц Внуково Цех-1" "2016-04-30T11:20:00.000+03:00 Выпущено таможней Мр Лц Внуково Цех-2" "2016-04-30T10:54:00.000+03:00 Прошло регистрацию Мр Лц Внуково Цех-3" "2016-04-29T04:42:00.000+03:00 Прибыло на территорию России Шереметьево ММПО PCI-7" "2016-04-26T16:00:00.000+09:00 Ожидает отправку из Японии Япония" "2016-04-25T14:10:00.000+09:00 Принято в отделении связи Япония"


складываем это всё бережно в index.html и отдаём в любой web сервер.

воскресенье, 27 ноября 2011 г.

Russian Post Tracking

говнопочта закрыла удобный интерфейс отслеживания почтовый отправлений через http://info.russianpost.ru/servlet/post_item
и оставила только http://www.russianpost.ru/resp_engine.aspx?Path=rp/servise/ru/home/postuslug/trackingpo
Но, через гугл всплывает ещё один интерфейс через http://www.russianpost.ru/resp_engine.aspx?Path=rp/servise/ru/home/postuslug/trackingpo/terminal. Его вид однозначно выпаливает интерфейс для терминалов, что оченьма интересно, так как терминальные сети обычно VPN, а здесь, на лицо, открытая сеть.

среда, 9 марта 2011 г.

russian post tracking from uk / ROYALMAIL

уже писал как автоматизировать трекинг с ROYALMAIL и совсем недавно зайдя на страничку окуел от мусора которое там гегениться. Королеаская почта насодила столько рекламы в старницу что никакими фильтрами её ликвидировать не удалось, поэтому было принято решение похерить всё от обратного:

/usr/local/bin/wget "http://www.royalmail.com/portal/rm/track?trackNumber=$post1" -O $index_t

#/usr/bin/grep -i -v "DOCTYPE\|xmlns\|head\|meta\|title\|script\|link\|body\|div\|href\|img\|_v
/usr/bin/grep -i "Your item\|$post1" $index_t >> $index_h

echo $html_hr >> $index_h



где $post1 это номер почтового отправления типа RF3*2*0*2**GB

четверг, 20 мая 2010 г.

google translate api

в ходе разработки сценария пришлось пообщаться с немецким DHL на его родном языке. Так как я не бельмеса по немецки не шпрехаю, а знать как перемещается моя посылочка по свету очень хотелось, пришлось подтянуть службу переводчик, на которую возлагалась простая функция
я ей говорю "бля бля бля бля" по немецки и говорю -Пожалуйста_с_немецкого_на_английский, а она мне в ответ выплёвывает "bla bla bla bla " на английском. Всё вроде просто и как обычно здесь меня подстерегал малюсенький хуёк - консольных служб таких ровно хуй ноль. Ну и ноль хуй с ними, не сильно и хотелось. И был устремлён мой взор на онлайн сервисы перевода, первым и по сути последним был испробован сервис перевода от компании google. Сервис простой и его функционал описан достаточно подробно, примеров не много, но для меня и этого было вполне достаточно.

Russian Post Tracking script update

продолжаем наращивать функционал скрипта для опроса почтовых трекинговых служб. на сей раз изменения коснулись опять RUSSIAN POST и добавился функционал для DHL Global mail.

RUSSIAN POST теперь выглядит так:
/usr/local/bin/wget "http://info.russianpost.ru/servlet/post_item?action=search&searchType=barCode&show_form=yes&barCode=$post4&page=1" -O $index_t

/usr/bin/grep -i "table\|td\|tr\|STYLESHEET\|$post4\|Cannot get a connection" $index_t | /usr/bin/grep -i -v "Dmitry\|Transitional\|pageTracker\|{"  > $tmp_fil

/bin/cat $tmp_fil | sed -e 's/\.\.\/css\///g' >> $index_h

DHL Global mail:
/usr/local/bin/wget --secure-protocol=auto --no-check-certificate  "https://www.deutschepost.de/sendung/simpleQueryResult.html?form.sendungsnummer=$post5&locale=en&form.einlieferungsdatum_monat=05&form.einlieferungsdatum_tag=14&form.einlieferungsdatum_jahr=2010" -O $index_t

/usr/bin/grep -i "Search criterion:\|$post5" $index_t | grep -i -v "pushservice.html" >> $index_h
echo $html_br >> $index_h
/usr/bin/grep -i "International Logistics Center" $index_t >> $index_h
так как DHL часть свежая, подозреваю что последний grep в виде
/usr/bin/grep -i "International Logistics Center\|The item" $index_t >> $index_h
ещё придётся не раз модифицировать. Выделенные цифры 05-14-2010 это дата в формате MM-DD-YYYY, дата когда посылка была передана в DHL
И как обычно: $post*  это переменная которая хранит ваш 13 символьный международный почтовый идентификатор отправления, те
postX=bb123456789bb

понедельник, 17 мая 2010 г.

Russian Post Tracking script update

обновился сценарий для отслеживания международных почтовых отправлений. Основные изменения коснулись USPS и незначительные RUSSIAN POST.

USPS теперь выглядит так:
#############################next##########USPS################
echo $html_hr >> $index_h

/usr/local/bin/wget "http://trkcnfrm1.smi.usps.com/PTSInternetWeb/InterLabelInquiry.do?strOrigTrackNum=$post4" -O $index_t

/usr/bin/grep -i "Class:\|Receipt\ Number:\|Service(s):\|mainTextbold\|Your\ item\ was\|International\ " $index_t >> $index_h


RUSSIAN POST выглядит так:
#######################################RUSSIAN#POST##########
#
/usr/local/bin/wget "http://info.russianpost.ru/servlet/post_item?action=search&searchType=barCode&show_form=yes&barCode=$post4&page=1" -O $index_t

/usr/bin/grep -i "table\|td\|tr\|STYLESHEET\|$post4" $index_t | /usr/bin/grep -i -v "Dmitry\|Transitional\|pageTracker\|{" > $tmp_fil

/bin/cat $tmp_fil | sed -e 's/\.\.\/css\///g' >> $index_h

Переменная $post4 это как обычно международный почтовый идентификатор отправления, в формате:
post4=LC123456789US

среда, 3 февраля 2010 г.

RUSSIAN POST TRACKING from UK

ещё раз обновил скрипт. на этот раз добавился монитор посылки едущей из Объединённого Королевства

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

а так же до кучи улучшился монитор посылки из HK, который появилась совсем недавно.

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



обращаю внимание на теги: тд и тр это подмена стандартных тегов td и tr. в силу того что фильтр блогспота не позволяет постить теги, приходится их писать по русски. Для нормальной работы grep-фильтра в скрипте, эти тегу нужно перекинуть в их нормальное английское написание и поставить перед каждым < скобку.

пятница, 29 января 2010 г.

RUSSIAN POST TRACKING

обновил скрипт. Добавил монитор посыЛЬки едущей через сервис Hongkongpost

############################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" $index_t >> $index_h

четверг, 17 декабря 2009 г.

посылка 2

Наконец пришла вторая посылка. Точнее не посылка, а попытка покупать товары не отрывая жопу от компьютера. Заказ с ебэя до меня ехал ровно один месяц. USPS Registered mail

выглядит зарубежный пакетик так:


а это видимо тот самый " tight security". Открывается руками крайне тяжело, проще разрезать.



а вот собственно и иноземный странник - футляр для очков. наконец то у очков есть собственный домик, а то жить в ретейловой картонке их реально притомило, ровно как и хозяина притомило их в эту картонку запихивать.

пятница, 4 декабря 2009 г.

Russian Post Tracking script

Заебавшись лазить на трекинг Почты России затем искать номер посылки и копипастить его куда следует я решил автоматизировать это дело.
Для автоматизации понадобиться любой *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.html
index_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.
по поводу выделенных тд и тр читать здесь