[Script & Tutorial] USSD via Terminal

Aplikasi-aplikasi diubuntu: • Aplikasi Grafis •
Aplikasi Internet •
Aplikasi Office •
Aplikasi Sound & Video •
Aplikasi Programming
User avatar
luxm4n
Posts: 465
Joined: 22 Apr 2011, 07:59
Location: Kalimantan Selatan
Contact:

[Script & Tutorial] USSD via Terminal

Postby luxm4n » 11 Jul 2013, 06:02

[img:center]http://i841.photobucket.com/albums/zz340/lucky_metal/MMGBug/Terminal_008_zps1c97c8fd.png[/img]

Sebnarnya di Ubuntu kalo urusan online sangat simple (Bagi modem yg fully supported linux), lebih simple daripada OS sebelah, di Ubuntu ada tool default bernama Modem Manager (modemmanager) yg bisa digunakan untuk keperluan management modem seperti SMS, USSD, Internet Connection, bahkan ada Modem Manager GUI yg artinya Front-End version dari Modem Manager biasa yg aslinya berbasis Command Line Interface.

Berhubung saat ini Modem Manager GUI lagi ada bug pada fitur USSD nya, lebih jelas lihat Screenshoot dibawah ini:

[img:center]http://i841.photobucket.com/albums/zz340/lucky_metal/MMGBug/Screenshotfrom2013-07-09230827_zps38bffe6c.png[/img]

Alhamdulillah Seluruh fiturnya jalan dengan modem huawei e173 saya, tinggal nunggu bug fix itu aja lagi :D

Karena USSD penting juga saya pikir walau jarang dipakai kecuali cek deposit, daripada ribet login di website provider untuk cek balance/deposit/pulsa, lebih baik USSD saja, maka saya berinisiatif untuk mencari sebuah solusi lain, karena masih sama2 pakai modemmanager juga, kenapa tidak jalankan via terminal aja, toh USSD juga cuma teks biasa, haha,,,

Sebenarnya ada versi GUInya yg lebih simple, namun hanya untuk cek deposit dan To Up, dan cuma bisa menjalankan satu USSD Code saja yg diset di file configurasi Provider, lebih lanjut klik link dibawah ini ya:

http://ubuntu-indonesia.com/forums/ubbt ... urasi_Prep


Untuk lebih advance, yaitu bisa menjalankan kode USSD apa pun yg kita mau, dan bisa merespon/reply USSD menu (biasanya untuk cek/daftar paket internet via USSD harus reply pake nomor menunya), nah kita bisa gunakan modemmanager via Terminal, tidak perlu root privilege, dengan mengetikkan perintah ini:

Cek dulu dimana modemnya berada

Tampilkan

Code: Select all

dbus-send --system --print-reply --dest=org.freedesktop.ModemManager /org/freedesktop/ModemManager org.freedesktop.ModemManager.EnumerateDevices


Tampilkan

Code: Select all

dbus-send --system --print-reply --dest=org.freedesktop.ModemManager <modem> org.freedesktop.ModemManager.Modem.Gsm.Ussd.Initiate string:*xxx#


Ganti xxx dengan nomor USSD nya, dan dengan path modemnya :D

Contoh:

Tampilkan

Code: Select all

dbus-send --system --print-reply --dest=org.freedesktop.ModemManager /org/freedesktop/ModemManager/Modems/0 org.freedesktop.ModemManager.Modem.Gsm.Ussd.Initiate string:*888#


Untuk mereply atau merespon menu di USSD, ganti Initiate dengan Respond

Jadinya seperti ini:

Tampilkan

Code: Select all

dbus-send --system --print-reply --dest=org.freedesktop.ModemManager /org/freedesktop/ModemManager/Modems/0 org.freedesktop.ModemManager.Modem.Gsm.Ussd.Respond string:x


Ganti x dengan nomor menu nya :)

Contoh:

Tampilkan

Code: Select all

dbus-send --system --print-reply --dest=org.freedesktop.ModemManager /org/freedesktop/ModemManager/Modems/0 org.freedesktop.ModemManager.Modem.Gsm.Ussd.Initiate string:0


0 untuk kembali ke menu utama, LOL :D

Oh ya, kalo menjalankan USSD yg ada menunya itu, maka kita tidak akan bisa menjalankan kode USSD lain jika tidak dihentikan dulu USSD tersebut, beda dengan USSD untuk cek deposit yg ga akan error jika kita menjalankan kode USSD lain.

Jika misalnya kita mengakses kode *363# lalu kita langsung ingin mengakses *123#, maka yg *363# harus dicancel dulu.

Masih dengan command yg berasal dari kode yg sama yg diubah sesuai fungsinya, hehe,,,

Jalankan command dibawah ini untuk menghentikan USSD yg saya jelaskan diatas:

Tampilkan

Code: Select all

dbus-send --system --print-reply --dest=org.freedesktop.ModemManager <modem>  org.freedesktop.ModemManager.Modem.Gsm.Ussd.Cancel


Ingat, ganti dengan path modem anda!

Sehingga menjadi:

Tampilkan

Code: Select all

dbus-send --system --print-reply --dest=org.freedesktop.ModemManager /org/freedesktop/ModemManager/Modems/0  org.freedesktop.ModemManager.Modem.Gsm.Ussd.Cancel



Ribet?, Terlalu panjang baris perintahnya?

Tenang, sudah saya buatkan script nya biar lebih singkat perintahnya, hehe,,,

Sebenarnya saya ingin upload saya file nya, namun lebh baik saya copas source codenya saja disini, itung-itung share cara bikin script executable :D

Langsung saja!


Script USSD Utama:

Tampilkan

Code: Select all

#!/bin/bash

modem=`dbus-send --system --print-reply --dest=org.freedesktop.ModemManager /org/freedesktop/ModemManager org.freedesktop.ModemManager.EnumerateDevices|grep "object path"`
modem=`echo $modem | sed 's/.*object path "//' | sed 's/"//'`

if  [ "x" = "x$1" ]
then
opt="Initiate"
else
opt=$1
fi

if  [ "x" = "x$2" ]
then
qry="*888#"
else
qry=$2
fi

clear
echo "USSD Output:"
echo
echo "Sending $qry to Modem ..."
echo
resp=`dbus-send --system --print-reply --dest=org.freedesktop.ModemManager $modem org.freedesktop.ModemManager.Modem.Gsm.Ussd.$opt string:$qry`
resp=`echo $resp | sed 's/.* string "//' | sed 's/"//'`
clear
echo "USSD Output:"
echo
echo $resp
echo


Script USSD Top Up:

Tampilkan

Code: Select all

#!/bin/bash

modem=`dbus-send --system --print-reply --dest=org.freedesktop.ModemManager /org/freedesktop/ModemManager org.freedesktop.ModemManager.EnumerateDevices|grep "object path"`
modem=`echo $modem | sed 's/.*object path "//' | sed 's/"//'`

if  [ "x" = "x$1" ]
then
clear
echo "USSD Output:"
echo
echo Please enter Voucher Code!
echo
exit
fi
qry="*133*$1#"
clear
echo "USSD Output:"
echo
echo "Redeeming Voucher Code: $qry ..."
echo
resp=`dbus-send --system --print-reply --dest=org.freedesktop.ModemManager $modem  org.freedesktop.ModemManager.Modem.Gsm.Ussd.Initiate string:$qry`
resp=`echo $resp | sed 's/.* string "//' | sed 's/"//'`
clear
echo "USSD Output:"
echo
echo $resp
echo


Script USSD Cancel:

Tampilkan

Code: Select all

#!/bin/bash

modem=`dbus-send --system --print-reply --dest=org.freedesktop.ModemManager /org/freedesktop/ModemManager org.freedesktop.ModemManager.EnumerateDevices|grep "object path"`
modem=`echo $modem | sed 's/.*object path "//' | sed 's/"//'`

resp=`dbus-send --system --print-reply --dest=org.freedesktop.ModemManager $modem  org.freedesktop.ModemManager.Modem.Gsm.Ussd.Cancel`
clear
echo "USSD Output:"
echo
echo "USSD Canceled!"
echo




Caranya adalah dengan menyimpan (copas) code diatas kedalam file, berikut step lengkapnya:


Enaknya via Terminal aja :D


Tampilkan

Code: Select all

sudo texteditor /usr/bin/namafile



Ganti texteditor dengan editor favorit anda (nano/gedit/dll), dan namafile ganti jadi nama file scriptnya.

Saran saya, nama filenya adalah:


ussd untuk script USSD utama, ussdt untuk topup, ussdc untuk USSD Cancel, agar lebih ringkas dan mudah diingat.

Tekan tombol CTRL+O dan Y untuk save code kedalam file tadi.


Selanjutnya fix permission:


Tampilkan

Code: Select all

sudo chomod 644 /usr/bin/namafile


Tampilkan

Code: Select all

sudo chmod +x /usr/bin/namafile



Petunjuk pemakaian :D


Initiate: untuk menjalankan USSD Code

Respond: untuk reply menu USSD


Contoh:

Tampilkan

Code: Select all

ussd Initiate *363#


Tampilkan

Code: Select all

ussd Respond 1



Note: Tidak bisa huruf kecil semua, Initiate dan Respond harus huruf besar diawal kata, persis seperti contoh.


Untuk script TopUP maka hanya menjalankan perintah berikut ini:


Tampilkan

Code: Select all

ussdt kodevoucher



Dan untuk Cancel USSD yg sedang berjalan maka cukup jalankan perintah:


Tampilkan

Code: Select all

ussdc




Secara default jika kita menjalankan hanya perintah "ussd" saja, tanpa Initiate, maka akan otomatis menjalankan cek deposit, dalam script diatas saya set ke provider Telkomsel, silahkan ganti *888# menjadi kode USSD cek deposit provider yg anda pakai.

Script diatas belum sempurna, saya masih ingin menyederhanakan lagi, sehingga perintahnya cukup "ussd -i *363#" dan "ussd -r 1" untuk reply, tapi saya masih kesulitan untuk membuatnya, haha maklum newbie :D

Saya akan sangat senang jika ada yg mau memberi masukan untuk menyempurnakan script ini.

Bisa saya katakan ini adalah versi Command Line nya dari aplikasi Prepaid Manager, hahaha,,, intinya sama-sama berbasis pada Modem Manager :D, hanya saja script yg saya share ini lebih advance daripada Prepaid Manager, walau pun via Terminal tapi saya rasa tidak masalah karna USSD kan cuma teks saja, yg penting bisa respond/reply menu USSD, kalau menggunakan Prepaid Manager masih belum bisa saat tulisan ini saya tulis, semoga nanti akan diupdate oleh developernya, dan semoga bug pada fitur USSD di Modem Manager GUI cepat diperbaiki.


Di dunia Open Source, banyak cara, metode, dan pilihan, jadi terserah user mau gimana lagi, semua lengkap :D, saran saya, gunakan cara, metode yg paling Efesien dan Efektif menurut anda.
User avatar
Malsasa
Posts: 2971
Joined: 07 Jun 2010, 22:37
Location: Mojokerto, Indonesia
Contact:

Re: [Script & Tutorial] USSD via Terminal

Postby Malsasa » 11 Jul 2013, 09:35

Terima kasih, Kang. Bagus sekali. Teruskan tutorial bagus gini lagi, Kang. Saya senang hasil ngoprek begini karena ngopreknya berguna.
User avatar
luxm4n
Posts: 465
Joined: 22 Apr 2011, 07:59
Location: Kalimantan Selatan
Contact:

Re: [Script & Tutorial] USSD via Terminal

Postby luxm4n » 11 Jul 2013, 13:55

Malsasa wrote:Terima kasih, Kang. Bagus sekali. Teruskan tutorial bagus gini lagi, Kang. Saya senang hasil ngoprek begini karena ngopreknya berguna.


Sama-sama kang, linux saja besar seperti ini karena "Sharing", hehe,,, dan sharing itu juga banyak banget manfaatnya untuk diri sendiri dan orang lain :)
User avatar
23Pstars
Posts: 170
Joined: 14 Apr 2010, 18:57
Location: Mataram
Contact:

Re: [Script & Tutorial] USSD via Terminal

Postby 23Pstars » 12 Aug 2013, 09:31

ini support buat modem apa aja gan?
User avatar
luxm4n
Posts: 465
Joined: 22 Apr 2011, 07:59
Location: Kalimantan Selatan
Contact:

Re: [Script & Tutorial] USSD via Terminal

Postby luxm4n » 12 Aug 2013, 17:01

Support modem yg support modemmanager,,,

Tapi script ini ane ga pake lagi karena Modem Manager GUI sudah update dan masalah USSD sudah fix, jadi lebih user friendly dan simple pakai Modem Manager GUI :D

Return to “Aplikasi Ubuntu”

Who is online

Users browsing this forum: No registered users and 2 guests