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:
- https://docs.microsoft.com/en-us/powershell/module/
- https://www.scriptinglibrary.com/languages/powershell/how-to-sign-a-powershell-script/
- https://siljith.com/2018/08/08/self-signed-certificate-with-an-expiry-date-of-more-than-one-year/
- https://stackoverflow.com/questions/32348794/how-to-get-status-of-invoke-expression-successful-or-failed
- https://powershell.org/forums/topic/how-do-powershell-scheduled-task-repetitionduration-indefinitely/
- https://gist.github.com/benrobot/67bacea1b1bbe4eb0d9529ba2c65b2a6
- https://www3.physnet.uni-hamburg.de/physnet/Tru64-Unix/HTML/APS32DTE/WKXXXXXX.HTM
- dan berbagai sumber
One reply on “PowerShell, Koding dan Signing: Contoh Kasus Kirim SMS”
[…] tanda tangani skrip dengan perintah seperti pada https://pdsi.unisayogya.ac.id/powershell-koding-dan-signing-contoh-kasus-kirim-sms/#tanda-tangan-skr… dan jalankan seperti pada […]