Advertisement
Guest User

Untitled

a guest
Jan 31st, 2014
698
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 19.28 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. #set -x
  4.  
  5. #ERR_NEED_TWO_PARAMS="need two params"
  6. USER_AGENT="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:5.0.1) Gecko/20100101 Firefox/5.0.1"
  7. TIME_OUT=120
  8. ATTEMPTS=5
  9. ATTEMPTS_TIME_OUT=30
  10. SILENT=0
  11. VERBOSE=0
  12.  
  13. function resp {
  14.     if [ -r $1 ]; then
  15.         status_code=`head -n1 $1 | cut -d' ' -f2`
  16.         if [ "$status_code" == "302" ] || [ "$status_code" == "301" ]; then # may be it's header like cookie
  17.             status_code_new=`grep -e "^HTTP" $1 | tail -n1 | cut -d' ' -f2`
  18.             if [ -n "$status_code_new" ]; then
  19.                 echo $status_code_new
  20.             else
  21.                 echo $status_code
  22.             fi
  23.         else
  24.             echo $status_code
  25.         fi
  26.     else
  27.         echo 999
  28.     fi
  29. }
  30.  
  31. function err {
  32.     if [ $SILENT -eq 0 ]; then
  33.         if [ $VERBOSE -eq 0 ]; then
  34.             echo "ERROR: $1"
  35.         else
  36.             echo "$voperator $vlogin ERROR: $1"
  37.         fi
  38.     fi
  39.     rm -f $tmp_cookie
  40.     rm -f $tmp_file
  41.     exit 1
  42. }
  43.  
  44. function err404 {
  45.     err "Page $1 has been change own structure"
  46. }
  47.  
  48. function err999 {
  49.     err "Connection error or can't write to /tmp"
  50. }
  51.  
  52. function errATT {
  53.     err "Exceeded the number of connection attempts to the server"
  54. }
  55.  
  56. function errCOO {
  57.     err "Can't get cookies from $1 or can't write to /tmp"
  58. }
  59.  
  60. ##### CUT HERE #####
  61.  
  62. function megafon {
  63.     tmp_file=/tmp/megafon.response
  64.  
  65.     rv=0
  66.     i=0
  67.     page="http://sg.megafon.ru/ps/scc/php/route.php"
  68.     while [ "$rv" != "200" ]; do
  69.         curl -i -s -m $TIME_OUT $page \
  70.             -d "CHANNEL=WWW&ULOGIN=$1" > $tmp_file
  71.  
  72.         rv=$(resp "$tmp_file")
  73.  
  74.         if [ "$rv" != "200" ]; then
  75.             case "$rv" in
  76.                 "999")
  77.                     err999
  78.                     ;;
  79.                 "404")
  80.                     err404 "$page"
  81.                     ;;
  82.                 *)
  83.                     sleep $ATTEMPTS_TIME_OUT
  84.                     let i=i+1
  85.                     ;;
  86.             esac
  87.         fi
  88.  
  89.         if [ $i -ge $ATTEMPTS ]; then
  90.             errATT
  91.         fi   
  92.     done
  93.  
  94.  
  95.     url=`sed -n -e 's/<URL>\(.*\)<\/URL>/\1/p' $tmp_file`
  96.  
  97.     if [ -z "$url" ]; then
  98.         err "Can't get service-guide url from $page"
  99.     fi
  100.    
  101.     rv=0
  102.     i=0
  103.     page=$url"ROBOTS/SC_TRAY_INFO?X_Username=$1&X_Password=$2"
  104.     while [ "$rv" != "200" ]; do
  105.         curl -L -i -s -m $TIME_OUT $page \
  106.             | iconv -c -fcp1251 > $tmp_file
  107.    
  108.         rv=$(resp "$tmp_file")
  109.  
  110.         if [ "$rv" != "200" ]; then
  111.             case "$rv" in
  112.                 "999")
  113.                     err999
  114.                     ;;
  115.                 "404")
  116.                     err404 "$page"
  117.                     ;;
  118.                 *)
  119.                     sleep $ATTEMPTS_TIME_OUT
  120.                     let i=i+1
  121.                     ;;
  122.             esac
  123.         fi
  124.  
  125.         if [ $i -ge $ATTEMPTS ]; then
  126.             errATT
  127.         fi   
  128.     done
  129.  
  130.     errmsg=`sed -ne 's/<MSEC-COMMAND>\(.*\)<\/MSEC-COMMAND>/\1/p' $tmp_file`
  131.     if [ -n "$errmsg" ]; then
  132.         err "$errmsg"
  133.     fi
  134.  
  135.     balance=`sed -ne 's/<BALANCE>\(.*\)<\/BALANCE>/\1/p' $tmp_file`
  136.  
  137.     rm $tmp_file
  138.  
  139.     if [ -z "$balance" ]; then
  140.         err "Can't get balance. Unkonown error."
  141.     fi
  142.    
  143.     if [ $VERBOSE -eq 0 ]; then
  144.         echo $balance
  145.     else
  146.         echo megafon $1 $balance
  147.     fi
  148. }
  149.  
  150. function mts {
  151.     tmp_file=/tmp/mts.response
  152.     tmp_cookie=/tmp/mts.cookies
  153.  
  154.     rv=0
  155.     i=0
  156.     page="https://login.mts.ru/amserver/UI/Login?service=lk&goto=https://lk.ssl.mts.ru/"
  157.     while [ "$rv" != "200" ]; do
  158.         curl -k -i -L -s -m $TIME_OUT "$page" \
  159.             -c $tmp_cookie \
  160.             --user-agent $USER_AGENT > $tmp_file
  161.  
  162.         rv=$(resp "$tmp_file")
  163.  
  164.         if [ "$rv" != "200" ]; then
  165.             case "$rv" in
  166.                 "999")
  167.                     err999
  168.                     ;;
  169.                 "404")
  170.                     err404 "$page"
  171.                     ;;
  172.                 *)
  173.                     sleep $ATTEMPTS_TIME_OUT
  174.                     let i=i+1
  175.                     ;;
  176.             esac
  177.         fi
  178.  
  179.         if [ $i -ge $ATTEMPTS ]; then
  180.             errATT
  181.         fi 
  182.  
  183.     done
  184.  
  185.     CSRFToken=`grep CSRFToken $tmp_file | head -n1 | sed -n -e 's/.*value="\(.*\)".*/\1/p'`
  186.  
  187.     if [ -z "$CSRFToken" ]; then
  188.         err "Can't get CSRFToken from $page"
  189.     fi
  190.  
  191.     rv=0
  192.     i=0
  193.     page="https://login.mts.ru/amserver/UI/Login?service=lk&goto=https://lk.ssl.mts.ru/"
  194.     while [ "$rv" != "200" ]; do
  195.         curl -k -i -L -s -m $TIME_OUT -L "$page" \
  196.             -c $tmp_cookie \
  197.             -b $tmp_cookie \
  198.             -d "IDToken1=$1&IDToken2=$2&goto=https%3A%2F%2Flk.ssl.mts.ru%2F&encoded=false&loginURL=%2Faervice%3Dlk%26gx_charset%3DUTF-8%26goto%3Dhttps%253A%252F%252Flk.ssl.mts.ru%252F&CSRFToken=$CSRFToken" \
  199.             --user-agent $USER_AGENT > $tmp_file
  200.  
  201.         rv=$(resp "$tmp_file")
  202.  
  203.         if [ "$rv" != "200" ]; then
  204.             case "$rv" in
  205.                 "999")
  206.                     err999
  207.                     ;;
  208.                 "404")
  209.                     err404 "$page"
  210.                     ;;
  211.                 *)
  212.                     sleep $ATTEMPTS_TIME_OUT
  213.                     let i=i+1
  214.                     ;;
  215.             esac
  216.         fi
  217.  
  218.         if [ $i -ge $ATTEMPTS ]; then
  219.             errATT
  220.         fi 
  221.  
  222.     done
  223.  
  224.     #errmsg=`grep small $tmp_file | sed -n -e 's/.*<small>\(.*\)<\/small>.*/\1/p'`
  225.     #if [ -n "$errmsg" ]; then
  226.     #    err "$errmsg"
  227.     #fi
  228.  
  229.     #errmsg=`grep 'label validate="IDToken2"' $tmp_file | sed -n -e 's/.*<label.*>\(.*\)<\/label>.*/\1/p'`
  230.     errmsg=`grep "label validate" $tmp_file | sed -n -e 's/.*<label.*>\(.*\)<\/label>/\1/p' | sed -e 's/^[ \t]*//' | tr -d '\n'`
  231.     if [ -n "$errmsg" ]; then
  232.         err "$errmsg"
  233.     fi
  234.  
  235.     rv=0
  236.     i=0
  237.     #page="https://login.mts.ru/profile/mobile/get"
  238.     #page="https://ihelper.mts.ru/selfcare/Services/get-balance.ashx?update=0"
  239.     #page="https://ihelper.mts.ru/selfcare/account-status.aspx"
  240.     page="https://login.mts.ru/profile/header?service=lk&style=2013&update"
  241.     while [ "$rv" != "200" ]; do
  242.         curl -k -i -L -s -m $TIME_OUT "$page" \
  243.             -c $tmp_cookie \
  244.             -b $tmp_cookie \
  245.             --user-agent $USER_AGENT > $tmp_file
  246.         rv=$(resp "$tmp_file")
  247.  
  248.         if [ "$rv" != "200" ]; then
  249.             case "$rv" in
  250.                 "999")
  251.                     err999
  252.                     ;;
  253.                 "404")
  254.                     err404 "$page"
  255.                     ;;
  256.                 *)
  257.                     sleep $ATTEMPTS_TIME_OUT
  258.                     let i=i+1
  259.                     ;;
  260.             esac
  261.         fi
  262.  
  263.         if [ $i -ge $ATTEMPTS ]; then
  264.             errATT
  265.         fi 
  266.     done
  267.    
  268.     #balance=`sed -n -e 's/.*balance":"\(.*\)","tariff.*/\1/p' $tmp_file`
  269.     #balance=`sed -n -e 's/.*<strong>\(.*\) .*<\/strong>.*/\1/p' $tmp_file`
  270.     balance=`grep "Ваш баланс" $tmp_file | sed -n -e 's/.*>\(.*\)<\/a><a.*/\1/p' | cut -d' ' -f1`
  271.  
  272.     if [ $VERBOSE -eq 0 ]; then
  273.         echo $balance
  274.     else
  275.         echo mts $1 $balance
  276.     fi
  277.  
  278.     rm -f $tmp_cookie
  279.     rm -f $tmp_file
  280. }
  281.  
  282. function beeline {
  283.     tmp_file=/tmp/beeline.response
  284.     tmp_cookie=/tmp/beeline.cookies
  285.  
  286.     rv=0
  287.     i=0
  288.     page="https://uslugi.beeline.ru/loginPage.do"
  289.     while [ "$rv" != "200" ]; do
  290.         curl -i -s -m $TIME_OUT -L -c $tmp_cookie $page \
  291.             -d "_stateParam=eCareLocale.currentLocale%3Dru_RU__Russian&_forwardName=null&_resetBreadCrumbs=false&_expandStatus=&userName=$1&password=$2&ecareAction=login" \
  292.             --referer "https://uslugi.beeline.ru/vip/loginPage.jsp" \
  293.             --user-agent $USER_AGENT | iconv -c -fcp1251 > $tmp_file
  294.  
  295.         rv=$(resp "$tmp_file")
  296.  
  297.         if [ "$rv" != "200" ]; then
  298.             case "$rv" in
  299.                 "999")
  300.                     err999
  301.                     ;;
  302.                 "404")
  303.                     err404 "$page"
  304.                     ;;
  305.                 *)
  306.                     sleep $ATTEMPTS_TIME_OUT
  307.                     let i=i+1
  308.                     ;;
  309.             esac
  310.         fi
  311.  
  312.         if [ $i -ge $ATTEMPTS ]; then
  313.             errATT
  314.         fi 
  315.     done
  316.  
  317.     if [ ! -r "$tmp_cookie" ]; then
  318.         errCOO "$page"
  319.     fi
  320.  
  321.     errmsg=`grep "Ошибка\!" $tmp_file | awk -F "</b> " '{print $2}'`
  322.    
  323.     if [ -n "$errmsg" ]; then
  324.         err $errmsg
  325.     fi
  326.  
  327.     rv=0
  328.     i=0
  329.     page="https://uslugi.beeline.ru/vip/prepaid/refreshedPrepaidBalance.jsp"
  330.     while [ "$rv" != "200" ]; do
  331.         curl -i -s -m $TIME_OUT -L -c $tmp_cookie -b $tmp_cookie $page | iconv -c -fcp1251 > $tmp_file
  332.  
  333.         rv=$(resp "$tmp_file")
  334.  
  335.         if [ "$rv" != "200" ]; then
  336.             case "$rv" in
  337.                 "999")
  338.                     err999
  339.                     ;;
  340.                 "404")
  341.                     err404 "$page"
  342.                     ;;
  343.                 *)
  344.                     sleep $ATTEMPTS_TIME_OUT
  345.                     let i=i+1
  346.                     ;;
  347.             esac
  348.         fi
  349.  
  350.         if [ $i -ge $ATTEMPTS ]; then
  351.             errATT
  352.         fi 
  353.     done
  354.  
  355.     balance=`grep small $tmp_file \
  356.             | sed 's/&nbsp;/ /g' \
  357.             | cut -d " " -f 1 \
  358.             | sed -e 's/^[ \t]*//' \
  359.             | sed s/,/./g`
  360.    
  361.     if [ -z "$balance" ]; then
  362.         err "Can't get balance"
  363.     fi
  364.  
  365.     if [ $VERBOSE -eq 0 ]; then
  366.         echo $balance
  367.     else
  368.         echo beeline $1 $balance
  369.     fi
  370.  
  371.     rm -f $tmp_cookie
  372.     rm -f $tmp_file
  373. }
  374.  
  375. function onlime {
  376.     tmp_file=/tmp/onlime.response
  377.     tmp_cookie=/tmp/onlime.cookies
  378.  
  379.     rv=0
  380.     i=0
  381.     page="https://my.onlime.ru"
  382.     while [ "$rv" != "200" ]; do
  383.         curl -k -i -s -m $TIME_OUT -c $tmp_cookie $page > $tmp_file
  384.  
  385.         rv=$(resp "$tmp_file")
  386.  
  387.         if [ "$rv" != "200" ]; then
  388.             case "$rv" in
  389.                 "999")
  390.                     err999
  391.                     ;;
  392.                 "404")
  393.                     err404 "$page"
  394.                     ;;
  395.                 *)
  396.                     sleep $ATTEMPTS_TIME_OUT
  397.                     let i=i+1
  398.                     ;;
  399.             esac
  400.         fi
  401.  
  402.         if [ $i -ge $ATTEMPTS ]; then
  403.             errATT
  404.         fi 
  405.     done
  406.  
  407.     if [ ! -r "$tmp_cookie" ]; then
  408.         errCOO "$page"
  409.     fi
  410.  
  411.     rv=0
  412.     i=0
  413.     page="https://my.onlime.ru/session/login"
  414.     while [ "$rv" != "200" ]; do
  415.         curl -k -i -s -m $TIME_OUT -L \
  416.             -b $tmp_cookie \
  417.             -c $tmp_cookie \
  418.             -d "login_credentials%5Blogin%5D=$1&login_credentials%5Bpassword%5D=$2&commit=%D0%92%D0%BE%D0%B9%D1%82%D0%B8" $page > $tmp_file
  419.  
  420.         rv=$(resp "$tmp_file")
  421.  
  422.         if [ "$rv" != "200" ]; then
  423.             case "$rv" in
  424.                 "999")
  425.                     err999
  426.                     ;;
  427.                 "404")
  428.                     err404 "$page"
  429.                     ;;
  430.                 *)
  431.                     sleep $ATTEMPTS_TIME_OUT
  432.                     let i=i+1
  433.                     ;;
  434.             esac
  435.         fi
  436.  
  437.         if [ $i -ge $ATTEMPTS ]; then
  438.             errATT
  439.         fi 
  440.     done
  441.  
  442.     errmsg=`grep "<title>ERROR</title>" $tmp_file | sed -n -e "s/.*<h1>\(.*\)<\/h1>.*/\1/p"`
  443.     if [ -n "$errmsg" ]; then
  444.         err "$errmsg"
  445.     fi
  446.  
  447.     errmsg=`grep err_msg_password $tmp_file | sed -n -e "s/.*<br>\(.*\)<br>.*/\1/p"`
  448.     if [ -n "$errmsg" ]; then
  449.         err "$errmsg"
  450.     fi
  451.  
  452.     rv=0
  453.     i=0
  454.     page="https://my.onlime.ru/json/cabinet/"
  455.     while [ "$rv" != "200" ]; do
  456.         curl -k -i -s -m $TIME_OUT -L \
  457.             -b $tmp_cookie \
  458.             -c $tmp_cookie \
  459.             $page > $tmp_file
  460.  
  461.         rv=$(resp "$tmp_file")
  462.  
  463.         if [ "$rv" != "200" ]; then
  464.             case "$rv" in
  465.                 "999")
  466.                     err999
  467.                     ;;
  468.                 "404")
  469.                     err404 "$page"
  470.                     ;;
  471.                 *)
  472.                     sleep $ATTEMPTS_TIME_OUT
  473.                     let i=i+1
  474.                     ;;
  475.             esac
  476.         fi
  477.  
  478.         if [ "$rv" == "200" ]; then
  479.             #balance=`sed -n 's/.*\"balance\":\(.*\),\"lock\".*/\1/p' $tmp_file`
  480.             balance=`grep -o 'balance":[0-9]*.[0-9]*' $tmp_file | cut -d':' -f2`
  481.             if [ ! -n "$balance" ]; then
  482.                 rv=500
  483.                 let i=i+1
  484.                 #exit 1
  485.             fi
  486.         fi
  487.  
  488.         if [ $i -ge $ATTEMPTS ]; then
  489.             errATT
  490.         fi
  491.     done
  492.  
  493.     #balance=`sed -n -e "s/.*<big>\(.*\)<\/big>.*/\1/p" $tmp_file \
  494.     #   | grep -v strong \
  495.     #   | head -n1`
  496.  
  497.     #balance=`sed -n 's/.*\"balance\":\(.*\),\"lock\".*/\1/p' $tmp_file`
  498.     balance=`grep -o 'balance":[0-9]*.[0-9]*' $tmp_file | cut -d':' -f2`
  499.  
  500.     if [ $VERBOSE -eq 0 ]; then
  501.         echo $balance
  502.     else
  503.         echo onlime $1 $balance
  504.     fi
  505.  
  506.     rm -f $tmp_cookie
  507.     rm -f $tmp_file
  508. }
  509.  
  510. function qiwi {
  511.     tmp_file=/tmp/qiwi.response
  512.     tmp_cookie=/tmp/qiwi.cookies
  513.  
  514.     rv=0
  515.     i=0
  516.     page="https://w.qiwi.com/auth/login.action"
  517.     while [ "$rv" != "200" ]; do
  518.         curl -i -s -m $TIME_OUT -c $tmp_cookie --get -d "source=MENU" --data-urlencode "login=$1" --data-urlencode "password=$2" $page > $tmp_file
  519.  
  520.         rv=$(resp "$tmp_file")
  521.  
  522.         if [ "$rv" != "200" ]; then
  523.             case "$rv" in
  524.                 "999")
  525.                     err999
  526.                     ;;
  527.                 "404")
  528.                     err404 "$page"
  529.                     ;;
  530.                 *)
  531.                     sleep $ATTEMPTS_TIME_OUT
  532.                     let i=i+1
  533.                     ;;
  534.             esac
  535.         fi
  536.  
  537.         if [ $i -ge $ATTEMPTS ]; then
  538.             errATT
  539.         fi 
  540.     done
  541.  
  542.     errmsg=`grep -v NORMAL $tmp_file | sed -n -e 's/.*message":"\(.*\)",".*/\1/p'`
  543.     if [ -n "$errmsg" ]; then
  544.         err "$errmsg"
  545.     fi
  546.    
  547.     rv=0
  548.     i=0
  549.     page="https://w.qiwi.com/user/person/account/list.action"
  550.     while [ "$rv" != "200" ]; do
  551.         curl -i -s -m $TIME_OUT -b $tmp_cookie  $page \
  552.             --referer "https://w.qiwi.com/person/account/main.action" > $tmp_file
  553.  
  554.         rv=$(resp "$tmp_file")
  555.  
  556.         if [ "$rv" != "200" ]; then
  557.             case "$rv" in
  558.                 "999")
  559.                     err999
  560.                     ;;
  561.                 "404")
  562.                     err404 "$page"
  563.                     ;;
  564.                 *)
  565.                     sleep $ATTEMPTS_TIME_OUT
  566.                     let i=i+1
  567.                     ;;
  568.             esac
  569.         fi
  570.  
  571.         if [ $i -ge $ATTEMPTS ]; then
  572.             errATT
  573.         fi 
  574.     done
  575.  
  576.     balance=`grep balance $tmp_file \
  577.         | head -n2 \
  578.         | tail -n1 \
  579.         | sed 's/[^0-9,-]*//g' \
  580.         | sed "s/,/\./g"`
  581.  
  582.     rm -f $tmp_cookie
  583.     rm -f $tmp_file
  584.  
  585.     if [ $VERBOSE -eq 0 ]; then
  586.         echo $balance
  587.     else
  588.         echo qiwi $1 $balance
  589.     fi
  590. }
  591.  
  592. function mgts {
  593.     tmp_file=/tmp/mgts.response
  594.     tmp_cookie=/tmp/mgts.cookies
  595.  
  596.     rv=0
  597.     i=0
  598.     page="https://ihelper.mgts.ru/CustomerSelfCare2/logon.aspx"
  599.     while [ "$rv" != "200" ]; do
  600.         curl -k -i -s -m $TIME_OUT -c $tmp_cookie $page > $tmp_file
  601.  
  602.         rv=$(resp "$tmp_file")
  603.  
  604.         if [ "$rv" != "200" ]; then
  605.             case "$rv" in
  606.                 "999")
  607.                     err999
  608.                     ;;
  609.                 "404")
  610.                     err404 "$page"
  611.                     ;;
  612.                 *)
  613.                     sleep $ATTEMPTS_TIME_OUT
  614.                     let i=i+1
  615.                     ;;
  616.             esac
  617.         fi
  618.  
  619.         if [ $i -ge $ATTEMPTS ]; then
  620.             errATT
  621.         fi 
  622.     done
  623.  
  624.     viewstate=`grep VIEWSTATE $tmp_file | sed -n -e 's/.*value="\(.*\)".*/\1/p'`
  625.     if [ -z "$viewstate" ]; then
  626.         err "Can't get VIEWSTATE__ from $page"
  627.     fi
  628.    
  629.     rv=0
  630.     i=0
  631.     page="https://ihelper.mgts.ru/CustomerSelfCare2/logon.aspx"
  632.     while [ "$rv" != "200" ]; do
  633.         curl -k -L -i -s -m $TIME_OUT -c $tmp_cookie -b $tmp_cookie $page \
  634.             --data-urlencode "__VIEWSTATE=$viewstate" \
  635.             -d "ctl00%24MainContent%24tbPhoneNumber=$1" \
  636.             -d "ctl00%24MainContent%24tbPassword=$2" \
  637.             -d "ctl00%24MainContent%24btnEnter=%D0%92%D0%BE%D0%B9%D1%82%D0%B8+%3E" \
  638.             --referer "$page" \
  639.             --user-agent $USER_AGENT > $tmp_file
  640.  
  641.         rv=$(resp "$tmp_file")
  642.  
  643.         if [ "$rv" != "200" ]; then
  644.             case "$rv" in
  645.                 "999")
  646.                     err999
  647.                     ;;
  648.                 "404")
  649.                     err404 "$page"
  650.                     ;;
  651.                 *)
  652.                     sleep $ATTEMPTS_TIME_OUT
  653.                     let i=i+1
  654.                     ;;
  655.             esac
  656.         fi
  657.  
  658.         if [ $i -ge $ATTEMPTS ]; then
  659.             errATT
  660.         fi 
  661.     done
  662.  
  663.     errmsg=`grep "b_error" $tmp_file | grep -v "%CONTENT%" | sed -n -e 's/.*<div\ class="bln">\(.*\)<\/div><div\ class="lbottom">.*/\1/p'`
  664.     if [ -n "$errmsg" ]; then
  665.         err "$errmsg"
  666.     fi
  667.    
  668.     rv=0
  669.     i=0
  670.     page="https://ihelper.mgts.ru/CustomerSelfCare2/account.aspx"
  671.     while [ "$rv" != "200" ]; do
  672.         curl -k -i -s -m $TIME_OUT -c $tmp_cookie -b $tmp_cookie $page \
  673.             --referer "https://ihelper.mgts.ru/CustomerSelfCare2/logon.aspx" > $tmp_file
  674.  
  675.         rv=$(resp "$tmp_file")
  676.  
  677.         if [ "$rv" != "200" ]; then
  678.             case "$rv" in
  679.                 "999")
  680.                     err999
  681.                     ;;
  682.                 "404")
  683.                     err404 "$page"
  684.                     ;;
  685.                 *)
  686.                     sleep $ATTEMPTS_TIME_OUT
  687.                     let i=i+1
  688.                     ;;
  689.             esac
  690.         fi
  691.  
  692.         if [ $i -ge $ATTEMPTS ]; then
  693.             errATT
  694.         fi 
  695.     done
  696.  
  697.     balance=`sed -n -e 's/.*<strong class="balance-value">\(.*\)<\/strong><\/strong>.*/\1/p' $tmp_file \
  698.         | sed 's/[^0-9,-]*//g' | sed "s/,/\./g"`
  699.  
  700.     rm -f $tmp_cookie
  701.     rm -f $tmp_file
  702.  
  703.     if [ $VERBOSE -eq 0 ]; then
  704.         echo $balance
  705.     else
  706.         echo mgts $1 $balance
  707.     fi
  708. }
  709.  
  710. function kyivstar {
  711.     tmp_file=/tmp/kyivstar.response
  712.     tmp_cookie=/tmp/kyivstar.cookies
  713.  
  714.     rv=0
  715.     i=0
  716.     page='https://my.kyivstar.ua/tbmb/login/show.do'
  717.     while [ "$rv" != "200" ]; do
  718.        curl -k -i -s -L -m $TIME_OUT "$page" | iconv -c -f cp1251 > $tmp_file
  719.  
  720.        rv=$(resp "$tmp_file")
  721.  
  722.        if [ "$rv" != "200" ]; then
  723.             case "$rv" in
  724.                 "999")
  725.                     err999
  726.                     ;;
  727.                 "404")
  728.                     err404 "$page"
  729.                     ;;
  730.                 *)
  731.                     sleep $ATTEMPTS_TIME_OUT
  732.                     let i=i+1
  733.                     ;;
  734.             esac
  735.         fi
  736.  
  737.         if [ $i -ge $ATTEMPTS ]; then
  738.             errATT
  739.         fi 
  740.     done
  741.  
  742.     rv=0
  743.     i=0
  744.     page='https://my.kyivstar.ua'`grep loginForm $tmp_file | sed -n 's/.*action="\(.*\)" onsubmit=.*/\1/p'`
  745.     while [ "$rv" != "200" ]; do
  746.        curl -k -i -s -L -m $TIME_OUT "$page" \
  747.        --data-urlencode "user=$1" \
  748.        --data-urlencode "password=$2" \
  749.        | iconv -c -f cp1251 > $tmp_file
  750.  
  751.        rv=$(resp "$tmp_file")
  752.  
  753.        if [ "$rv" != "200" ]; then
  754.             case "$rv" in
  755.                 "999")
  756.                     err999
  757.                     ;;
  758.                 "404")
  759.                     err404 "$page"
  760.                     ;;
  761.                 *)
  762.                     sleep $ATTEMPTS_TIME_OUT
  763.                     let i=i+1
  764.                     ;;
  765.             esac
  766.         fi
  767.  
  768.         if [ $i -ge $ATTEMPTS ]; then
  769.             errATT
  770.         fi 
  771.     done
  772.  
  773.     errmsg=`cat $tmp_file \
  774.         | grep redError \
  775.         | grep '<td' \
  776.         | sed -n -e 's/.*<td.*>\(.*\)<\/td>.*/\1/p' \
  777.         | tr '\n' ' '`
  778.    
  779.     if [ -n "$errmsg" ]; then
  780.         err "$errmsg"
  781.     fi
  782.    
  783.     balance=`sed -n -e 's/<td style="padding: 0px;"><b>\(.*\)<\/b>/\1/p' $tmp_file | sed 's/,/\./p'`
  784.  
  785.     rm -f $tmp_cookie
  786.     rm -f $tmp_file
  787.  
  788.     if [ $VERBOSE -eq 0 ]; then
  789.         echo $balance
  790.     else
  791.         echo kyivstar $1 $balance
  792.     fi
  793.  
  794. }
  795.  
  796. function djuice {
  797.     tmp_file=/tmp/djuice.response
  798.     tmp_cookie=/tmp/djuice.cookies
  799.  
  800.     rv=0
  801.     i=0
  802.     page='https://my.djuice.ua/tbmb/login_djuice/show.do'
  803.     while [ "$rv" != "200" ]; do
  804.        curl -k -i -s -m $TIME_OUT $page > $tmp_file
  805.  
  806.        rv=$(resp "$tmp_file")
  807.  
  808.        if [ "$rv" != "200" ]; then
  809.             case "$rv" in
  810.                 "999")
  811.                     err999
  812.                     ;;
  813.                 "404")
  814.                     err404 "$page"
  815.                     ;;
  816.                 *)
  817.                     sleep $ATTEMPTS_TIME_OUT
  818.                     let i=i+1
  819.                     ;;
  820.             esac
  821.         fi
  822.  
  823.         if [ $i -ge $ATTEMPTS ]; then
  824.             errATT
  825.         fi 
  826.     done
  827.  
  828.     rv=0
  829.     i=0
  830.     page='https://my.djuice.ua'`grep "perform.do" $tmp_file | sed -e 's/.*<form.*action="\(.*\)" onsubmit.*/\1/p'`
  831.     while [ "$rv" != "200" ]; do
  832.        curl -k -i -s -m $TIME_OUT '$page' \
  833.        --data-urlencode "user=$1" \
  834.        -d "password=$2" > $tmp_file
  835.  
  836.        rv=$(resp "$tmp_file")
  837.  
  838.        if [ "$rv" != "200" ]; then
  839.             case "$rv" in
  840.                 "999")
  841.                     err999
  842.                     ;;
  843.                 "404")
  844.                     err404 "$page"
  845.                     ;;
  846.                 *)
  847.                     sleep $ATTEMPTS_TIME_OUT
  848.                     let i=i+1
  849.                     ;;
  850.             esac
  851.         fi
  852.  
  853.         if [ $i -ge $ATTEMPTS ]; then
  854.             errATT
  855.         fi 
  856.     done
  857.  
  858.     errmsg=`grep redError $tmp_file | grep '<td' | iconv -f cp1251 | sed -n -e 's/.*<td.*>\(.*\)<\/td>.*/\1/p' | tr '\n' ' '`
  859.     if [ -n "$errmsg" ]; then
  860.         err "$errmsg"
  861.     fi
  862.    
  863.     balance=`cat $tmp_file | iconv -f cp1251 | tr '\n' ' ' | sed -n -e 's/.*<td.*><b>\(.*\)<\/b>.*<\/td>.*/\1/p'`
  864.  
  865.     rm -f $tmp_cookie
  866.     rm -f $tmp_file
  867.  
  868.     if [ $VERBOSE -eq 0 ]; then
  869.         echo $balance
  870.     else
  871.         echo djuice $1 $balance
  872.     fi
  873.  
  874. }
  875.  
  876. function usage {
  877.     echo "usage: $0 [-t{sec}] [-a{attempts}] [-T{sec_attempts}] [-s] [-v] [-h] {megafon|mts|beeline|mgts|onlime|qiwi|kyivstar} {login} [password]"
  878.     echo "  -t Timeout for connections, default $TIME_OUT sec"
  879.     echo "  -a Attempts of conections, default $ATTEMPTS"
  880.     echo "  -T Sleep between attempts, default $ATTEMPTS_TIME_OUT"
  881.     echo "  -s Silent, don't show any errors"
  882.     echo "  -v Verbose, show operator name and login before balance"
  883.     exit $1
  884. }
  885.  
  886. while getopts "t:a:T:svh" optname; do
  887.     case "$optname" in
  888.         "t")
  889.             if ! [[ "$OPTARG" =~ ^[0-9]+$ ]]; then
  890.                 usage 1
  891.             else
  892.                 TIME_OUT=$OPTARG
  893.             fi
  894.             ;;
  895.         "a")
  896.             if ! [[ "$OPTARG" =~ ^[0-9]+$ ]]; then
  897.                 usage 1
  898.             else
  899.                 ATTEMPTS=$OPTARG
  900.             fi
  901.             ;;
  902.         "T")
  903.             if ! [[ "$OPTARG" =~ ^[0-9]+$ ]]; then
  904.                 usage 1
  905.             else
  906.                 ATTEMPTS_TIME_OUT=$OPTARG
  907.             fi
  908.             ;;
  909.         "s")
  910.             SILENT=1
  911.             ;;
  912.         "v")
  913.             VERBOSE=1
  914.             ;;
  915.         "h")
  916.             usage 0
  917.             ;;
  918.         *)
  919.             usage 1
  920.             ;;
  921.     esac
  922. done
  923.  
  924. p="${@:$OPTIND}"
  925.  
  926. voperator=`echo $p | cut -d' ' -f1`
  927. vlogin=`echo $p | cut -d' ' -f2`
  928. vpassword=`echo $p | cut -d' ' -f3`
  929.  
  930. if [ -z "$voperator" ] || [ -z "$vlogin" ] ; then
  931.     usage 1
  932. fi
  933.  
  934. if [ -z "$vpassword" ] ; then
  935.     stty -echo
  936.     read -p "Password: " vpassword; echo
  937.     stty echo
  938. fi
  939.  
  940. case "$voperator" in
  941.     megafon)
  942.         megafon $vlogin $vpassword
  943.     ;;
  944.     mts)
  945.         mts $vlogin $vpassword
  946.     ;;
  947.     beeline)
  948.         beeline $vlogin $vpassword
  949.     ;;
  950.     mgts)
  951.         mgts $vlogin $vpassword
  952.     ;;
  953.     onlime)
  954.         onlime $vlogin $vpassword
  955.     ;;
  956.     qiwi)
  957.         qiwi $vlogin $vpassword
  958.     ;;
  959.     djuice)
  960.         djuice $vlogin $vpassword
  961.     ;;
  962.     kyivstar)
  963.         kyivstar $vlogin $vpassword
  964.     ;;
  965.     *)
  966.         usage 1
  967.  
  968. esac
  969.  
  970. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement