[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/zz34 ... 97c8fd.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/zz34 ... bffe6c.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:

forums/ubbthreads.php/topics/138565/Ins ... 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

[spoiler]

Code: Select all

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

[spoiler]

Code: Select all

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

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

Contoh:

[spoiler]

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#
[/spoiler]

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

Jadinya seperti ini:

[spoiler]

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
[/spoiler]

Ganti x dengan nomor menu nya :)

Contoh:

[spoiler]

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
[/spoiler]

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:

[spoiler]

Code: Select all

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

Ingat, ganti dengan path modem anda!

Sehingga menjadi:

[spoiler]

Code: Select all

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


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:

[spoiler]

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
[/spoiler]

Script USSD Top Up:

[spoiler]

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
[/spoiler]

Script USSD Cancel:

[spoiler]

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
[/spoiler]



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


Enaknya via Terminal aja :D


[spoiler]

Code: Select all

sudo texteditor /usr/bin/namafile
[/spoiler]


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:


[spoiler]

Code: Select all

sudo chomod 644 /usr/bin/namafile
[/spoiler]

[spoiler]

Code: Select all

sudo chmod +x /usr/bin/namafile
[/spoiler]


Petunjuk pemakaian :D


Initiate: untuk menjalankan USSD Code

Respond: untuk reply menu USSD


Contoh:

[spoiler]

Code: Select all

ussd Initiate *363#
[/spoiler]

[spoiler]

Code: Select all

ussd Respond 1
[/spoiler]


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:


[spoiler]

Code: Select all

ussdt kodevoucher
[/spoiler]


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


[spoiler]

Code: Select all

ussdc
[/spoiler]



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: 2976
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

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
User avatar
next396
Posts: 10
Joined: 24 Nov 2016, 12:08

Re: [Script & Tutorial] USSD via Terminal

Postby next396 » 24 Nov 2016, 12:21

Ini adalah topik baru bagi saya. Katakan padaku, di mana Anda dapat menemukan informasi lebih lanjut? Terima kasih!

Who is online

Users browsing this forum: No registered users and 3 guests