Categories
Dokumentasi

PowerShell, Koding dan Signing: Contoh Kasus Kirim SMS

Daftar Isi

Kirim SMS di Linux

|-Skrip Kirim SMS

Skrip Powershell di atas dapat di-convert ke dalam skrip Bash di Linux. Sebelum memulai menulis skrip, mungkin perlu memasang jq terlebih dahulu. Simpan skrip, misalnya ~/SendSMS.bash, dengan skrip sebagai berikut:

#!/bin/bash
#sumber:
#https://linuxize.com/post/curl-post-request/
#https://stackoverflow.com/questions/39139107/how-to-format-a-json-string-as-a-table-using-jq
#https://www.gnu.org/software/gawk/manual/gawk.html#Field-Separators
token='abcdefghijk'
curl -X POST -F 'token='$token https://alamatapi.com/apidatasms | jq -r '.[] | "\(.id)\t\(.nomorhp)\t\(.nama)"' |
awk -v tkn="$token" 'BEGIN {FS="\t"}; 
{
#siapkan string sms, kemudian kirim
command="sudo gammu sendsms TEXT "$2" -text \"Yth "$3" bahwa ...\""; 
  command|getline result; 
close(command); 
if (result ~ /OK/) 
{
  #siapkan URL flag sudah selesai SMS, kemudian kirim
  system("curl -X POST -F '\''token="tkn"'\'' -F '\''id="$1"'\'' https://alamatapi.com/flagsudahsms/");
} 
else 
{
  print "error";
}
}'

Berikan hak akses agar dapat dieksekusi:

chmod +x /bin/bash ~/SendSMS.bash

|-Penjelasan Skrip

|–curl apidatasms

curl -X POST -F 'token='$token https://alamatapi.com/apidatasms

Perintah di atas akan mengirimkan request ke https://alamatapi.com/apidatasms dengan parameter token=abcdefghijk dengan metode POST. Server akan memberi respon data dalam bentuk JSON:

{
  "id": "1234",
  "nomorhp": "00000000",
  "nama": "Fulan bin Fulan"
}
{
  "id": "1235",
  "nomorhp": "00000000",
  "nama": "John Doe"
}

|–jq -r

jq -r '.[] | "\(.id)\t\(.nomorhp)\t\(.nama)"'

Data JSON dari perintah sebelumnya akan diformat ke dalam bentuk tabel menggunakan jq.

Opsi -r akan menyebabkan output dituliskan langsung tanpa tanda kutip, berguna untuk sistem yang tidak berbasis JSON.

.[] maknanya akan mengambil hasil menggunakan indeks pada JSON.

“\(.id)\t\(.nomorhp)\t\(.nama)” memberitahu jq format yang ingin dituliskan:

1234⇥00000000⇥Fulan bin Fulan
1235⇥00000000⇥John Doe

|–awk

awk -v tkn="$token" 'BEGIN {FS="\t"}; 
{
#siapkan string sms, kemudian kirim
command="sudo gammu sendsms TEXT "$2" -text \"Yth "$3" bahwa ...\""; 
  command|getline result; 
close(command); 
if (result ~ /success/) 
{
  #siapkan URL flag sudah selesai SMS, kemudian kirim
  system("curl -X POST -F '\''token="tkn"'\'' -F '\''id="$1"'\'' https://alamatapi.com/flagsudahsms/");
} 
else 
{
  print "error";
}
}'

Hasil dari proses sebelumnya akan diproses oleh AWK.

-v tkn=”$token” digunakan oleh AWK untuk mengirimkan nilai variabel sistem $token ke dalam variabel AWK tkn, karena di dalam AWK tidak dapat membaca variabel sistem.

Secara bawaan, AWK akan menggunakan spasi kosong sebagai delimiter. BEGIN {FS=”\t”}; digunakan untuk memberitahu AWK bahwa delimiter diganti dengan tab. Kolom pertama dapat diakses dengan $1, …, kolom ke-n dapat diakses dengan $n.

Skrip di dalam tanda kurung kurawal akan di ulang (repeat, while-do) mengambil baris per baris data.

Untuk menjalankan perintah terminal sesuai yang dituliskan dapat menggunakan:

  • command=””;
    command|getline result;
    close(command);
  • system (“”)

|-Penjadwalan

Penjadwalan dilakukan menggunakan cron. Jalankan perintah crontab -e, kemudian berikan penjadwalan untuk melakukan eksekusi setiap 15 menit

*/15 * * * * ~/SendSMS.bash

|-Hash (Linux)

#ini adalah contoh menggunakan hash di terminal Linux
text="The string to hash goes here";
echo -n $text | sha512sum | awk '{ print $1; }'
echo -n $text | sha256sum | awk '{ print $1; }'
echo -n $text | md5sum | awk '{ print $1; }'

#ini adalah contoh yang lebih kompleks
salt1="salt1"
salt2="salt2"
echo -n $text$salt1 | md5sum | awk -v s="$salt2" '{ printf $1 s; }' | sha512sum | awk '{ printf $1; }

Tujuan dari menggunakan echo -n dan printf adalah agar tidak ada newline di akhir kata.

|-UUID (Linux)

Uniqid=$(uuidgen)
echo $Uniqid

Demikian, semoga bermanfaat. [bst]

sumber:

By basit

Biro Pengembangan Teknologi Dan Sistem Informasi

One reply on “PowerShell, Koding dan Signing: Contoh Kasus Kirim SMS”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.