LINUX.ORG.RU

Накидайте скриптов для проверки баланса мобильных

 , , ,


2

1

Нужны скрипты для проверки баланса через сервис оператора (типа личный кабинет), например такие есть на android/ios. Собственно может кто писал для себя или пользует что-то рабочее, а то все что я нагуглил, давно протухло. Интересует тройка.

★★★★★

Последнее исправление: Lordwind (всего исправлений: 1)

Ответ на: комментарий от Allakka

Это для 3G модема? Нет, мне для интернета, через сервис опсоса. Типа забил логин-пароль от личного кабинета - получил остаток на счете.

Lordwind ★★★★★
() автор топика
Ответ на: комментарий от Lordwind

В частности для МТС ни какой логин и пароль не нужен, достаточно подключиться с модема МТС, после чего можно спокойно зайти в личный кабинет и посмотреть баланс.

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

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
#!/usr/bin/perl

use Getopt::Std;
use Device::Gsm::Pdu;

# defaults
$opt_r = "/dev/ttyUSB2";
$opt_s = "/dev/ttyUSB2";

my $USAGE = <<__EOU;

Usage: $0 [-i input_port] [-o output_port] [-n] [-h] [-v] ussd_msg

Description:
  Send and receive 7-bit PDU-encoded USSD messages.
  Written and tested for Huawei E1550 GSM/UMTS USB modem.

Options:
  -r port   Port to receive data from. Default: $opt_r
  -s port   Port to send AT commands to. Default: $opt_s
  -n        Do not send any data to port. Useful with -v.
  -h        Print this help.
  -v        Be verbose.
__EOU

sub HELP_MESSAGE {print "$USAGE\n"; exit;}
sub VERSION_MESSAGE {};
getopts ('i:o:hnv');
HELP_MESSAGE() and exit if (! $ARGV[0]) or defined($opt_h);

print "USSD MSG: $ARGV[0]\n" if $opt_v;
my $ussd_req = Device::Gsm::Pdu::encode_text7($ARGV[0]);
$ussd_req =~ s/^..//;
print "PDU ENCODED: $ussd_req\n" if $opt_v;

my $ussd_reply;
if (! $opt_n) {
    open (SENDPORT, '+<', $opt_s) or die "Can't open '$opt_s': $!\n";
    print SENDPORT 'AT+CUSD=1,',$ussd_req,",15\r\n";
    close SENDPORT;
    open (RCVPORT, $opt_r) or die "Can't open '$opt_r': $!\n";
    print "Waiting for USSD reply...\n" if $opt_v;
    while (<RCVPORT>) {
        chomp;
        die "USSD ERROR\n" if $_ eq "+CUSD: 2";
        if (/^\+CUSD: 0,\"([A-F0-9]+)\"/) {
            $ussd_reply = $1;
            print "PDU USSD REPLY: $ussd_reply\n" if $opt_v;
            last;
        }
        print "Got unknown USSD message: $_\n" if /^\+CUSD:/ and $opt_v;
    }
}

if ($ussd_reply) {
    $decoded_ussd_reply = Device::Gsm::Pdu::decode_text_UCS2('00'.$ussd_reply);
    print STDOUT "USSD REPLY: $decoded_ussd_reply\n";
}
else {print "No USSD reply!\n";}
19:58 ygor /home/ygor $ ./phone/balans \*102#
USSD REPLY: 19.28р. 0 Кб.
19:58 ygor /home/ygor $

Мегафон, Билайн работают. Мопед - хуавей.

Ygor ★★★★★
()
Ответ на: комментарий от kostik87

Напишите скрипт

дурное дело не хитрое, если что сам напишу, просто хочу посмотреть на готовые варианты

Lordwind ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.