Skip to content

Instantly share code, notes, and snippets.

@unstabler
Created July 1, 2015 23:51
Show Gist options
  • Save unstabler/2d5ba8e3ce5cb7a483bc to your computer and use it in GitHub Desktop.
Save unstabler/2d5ba8e3ce5cb7a483bc to your computer and use it in GitHub Desktop.
와이브로 사용량 확인 스크립트
#!/usr/bin/env perl
# wibro-usage
# Wibro 라우터 의 사용량을 표시해 줍니다.
# KWD-B2600에서 정상 동작 확인.
#
# ※ 사용 전 환경 변수에 WB_AUTH=username:password 와 같은 식으로 등록해 주세요.
#
use 5.010;
use strict;
use warnings;
use MIME::Base64 qw/encode_base64/;
use LWP::UserAgent;
sub PROTOCOL () { "http://" }
sub ROUTER_ADDR () { "192.168.1.254" }
sub ROUTER_API_BASE ($) { PROTOCOL . ROUTER_ADDR . "/goform" . shift }
sub ROUTER_API_USAGE_UPDATE_REQUEST () { ROUTER_API_BASE "/updateWBUsage" }
sub ROUTER_API_USAGE_UPDATE_IS_DONE () { ROUTER_API_BASE "/checkWBUsageDone" }
sub ROUTER_API_USAGE_GET () { ROUTER_API_BASE "/getWBUsage" }
sub AUTHORIZATION_HEADER ($) { sprintf "Basic %s", encode_base64(shift) }
sub FORMAT_USAGE () {
<<FORMAT
== Wibro 사용 정보 ==
사용 가능: %d MB
사용량 : %d MB
FORMAT
}
sub request {
my $ua = LWP::UserAgent->new;
my $url = shift;
$ua->default_header(Authorization => AUTHORIZATION_HEADER($ENV{WB_AUTH}));
my $req = HTTP::Request->new(POST => $url);
$req->content_type('text/plain');
$req->content('n/a');
my $res = $ua->request($req);
warn "request failed to $url" unless $res->is_success;
return $res;
}
sub update {
request(ROUTER_API_USAGE_UPDATE_REQUEST);
request(ROUTER_API_USAGE_UPDATE_IS_DONE);
}
sub get {
my $res = request(ROUTER_API_USAGE_GET);
die unless $res->is_success;
my ($plan, $data_avail, $data_used) = split ";", $res->decoded_content;
printf FORMAT_USAGE, $data_avail, $data_used;
}
update unless join($", @ARGV) =~ m/no-update/;
get;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment