• Masim “Vavai” Sugianto

    Founder PT. Excellent Infotama Kreasindo– perusahaan email services provider (ESP) dan menjadi konsultan pada berbagai instansi pemerintah, korporasi besar, lembaga perbankan dan institusi pendidikan di Indonesia.

    Lebih detail tentang Vavai.




  • Publishing

  • Recent Posts

    • Pengalaman Saat Sakit : Keluarga, Sahabat dan Bagaimana Jika…
    • Refleksi Setelah Sakit
    • Legacy
    • Bitcoin, Ethereum, Dogecoin
    • Penjualan Langsung : Keliling dan Mangkal
  • Recent Comments

    • PT. Infra Solution International on Perkembangan Usaha Penjualan Pisang “Zeze Zahra” Setelah 1 Bulan
    • PT. Infra Solution International on Refleksi Setelah Sakit
    • PT. Infra Solution International on Pengalaman Saat Sakit : Keluarga, Sahabat dan Bagaimana Jika…
    • ict Administrator on Pengalaman Saat Sakit : Keluarga, Sahabat dan Bagaimana Jika…
    • sada dua on Pengalaman Saat Sakit : Keluarga, Sahabat dan Bagaimana Jika…
  • Archives

    • February 2021
    • January 2021
    • December 2020
    • August 2020
    • July 2020
    • April 2020
    • March 2020
    • August 2019
    • July 2019
    • June 2019
    • March 2019
    • February 2019
    • January 2019
    • November 2018
    • October 2018
    • August 2018
    • May 2018
    • April 2018
    • January 2018
    • December 2017
    • July 2017
    • December 2016
    • November 2016
    • April 2016
    • March 2016
    • November 2015
    • July 2015
    • April 2015
    • November 2014
    • October 2014
    • February 2014
    • January 2014
    • December 2013
    • November 2013
    • October 2013
    • September 2013
    • August 2013
    • June 2013
    • May 2013
    • March 2013
    • February 2013
    • January 2013
    • December 2012
    • November 2012
    • October 2012
    • September 2012
    • August 2012
    • July 2012
    • June 2012
    • May 2012
    • April 2012
    • March 2012
    • February 2012
    • January 2012
    • December 2011
    • November 2011
    • October 2011
    • September 2011
    • August 2011
    • July 2011
    • June 2011
    • May 2011
    • April 2011
    • March 2011
    • February 2011
    • January 2011
    • December 2010
    • November 2010
    • October 2010
    • September 2010
    • August 2010
    • July 2010
    • June 2010
    • May 2010
    • April 2010
    • March 2010
    • February 2010
    • January 2010
    • October 2008
    • September 2008
    • August 2008
    • July 2008
    • June 2008
    • May 2008
    • April 2008
    • March 2008
    • February 2008
    • January 2008
    • December 2007
    • November 2007
    • October 2007
    • September 2007
    • August 2007
    • July 2007
    • June 2007
    • May 2007
    • April 2007
    • March 2007
  • Home
  • Bisnis & Marketing
  • Computer & IT Related
  • Lifestyle
  • Publishing
  • Free Stuff
  • About
  • Kontak

Execute Linux Shell Command within Java Program

May 21, 2007

Java memang memiliki pustaka sendiri, baik yang native terhadap suatu sistem operasi maupun yang bersifat OS independent, namun kebutuhan untuk menjalankan fungsi eksternal suatu OS kadang tetap dibutuhkan.

Salah satu fungsi yang bisa digunakan adalah Runtime.exec yang bisa dimanfaatkan untuk melakukan encapsulasi perintah dari bash shell (terminal) pada Linux.


Sebagian programmer mungkin berargumen, mengapa mesti menggunakan perintah bash untuk melakukan suatu pekerjaan, padahal sebagian fungsi tersebut sudah tersedia pada pustaka Java. Jawabnya, ada banyak hal yang bisa kita lakukan dengan menjalankan suatu perintah secara langsung tanpa menggunakan pustaka.

Contohnya adalah konfigurasi pada email server postfix. Email server postfix mendukung perintah postconf -e item_konfigurasi=pilihan_konfigurasi. Dengan melakukan encapsulasi perintah tersebut, kita bisa membuatkan front-end GUI yang mempermudah proses instalasi postfix.

Ide ini muncul setelah saya membuat skrip sederhana untuk otomatisasi install postfix pada SuSE Linux.

Berikut adalah kode sederhana untuk menjalankan perintah shell pada program Java.

try {
// Execute a command without arguments
String command = "ls";
Process child = Runtime.getRuntime().exec(command);

// Execute a command with an argument
command = "ls /tmp";
child = Runtime.getRuntime().exec(command);
} catch (IOException e) {
}

Jika argumen memiliki spasi, kita bisa melakukan overload agar perintah dan argumennya dikirim dalam bentul array, seperti contoh berikut :

try {
// Execute a command with an argument that contains a space
String[] commands = new String[]{"grep", "hello world", "/tmp/f.txt"};
commands = new String[]{"grep", "hello world", "c:\\Documents and Settings\\f.txt"};
Process child = Runtime.getRuntime().exec(commands);
} catch (IOException e) {
}

Contoh lain adalah menjalankan suatu class dengan argumen dan menampilkan hasilnya. Lihat contoh kode berikut :

import java.io.*;
public class ProcTest
{
public static void main(String args[]) throws IOException
{
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(args);
BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
while(br.ready())
{
System.out.println(br.readLine());
}
}
}

Compile dan jalankan dengan perintah java ProcTest ls.

Semoga bermanfaat.

javaMigrasi ProgrammingpemrogrammanprogrammingTips, Tricks & Tutorial
Share

Migrasi Programming

Muhammad Rivai Andargini

You might also like

Plugins Gallery untuk Menggantikan Gallery Block WordPress (Images Size)
July 17, 2020
Update Script untuk Ubuntu Initial Server Setup
April 20, 2020
Tips Bash Script : Menghapus File yang Dibuat Sebelum Tanggal Tertentu
September 1, 2013

3 Comments


Ndut
June 10, 2008 at 1:32 am

wah tulisan yang bgs tu mas, tapi saya coba dengan perintah :

try {
// Execute a command with an argument that contains a space
String[] commands = new String[]{“ls > /home/temp.txt”};
commands = new String[]{“ls > /home/temp.txt”};
Process child = Runtime.getRuntime().exec(commands);
} catch (IOException e) {
}

kok ga ada output nya ya? harus nya kan tercipta file temp.txt, yang isi file nya output nya ls…mohon bantuannya mas…
Makasih



Vavai
June 10, 2008 at 5:49 am

Halo Ndut,

Perintah diatas bukan untuk membuat file tapi melakukan eksekusi. Jadi commandnya yang dieksekusi, bukan pembuatannya.

ls kan buat menampilkan, bukan membuat file

Coba pakai perintah ini :
echo “Hello Vavai” > /home/user/test.txt



Ndut
June 11, 2008 at 2:09 am

tengkyu mas…tapi maxud nya bkn gt, saya ingin membuat sebuat file dengan nama (misalnya) temp.txt di dlm folder /home/user/ dan isi dari file tersebut adalah
hasil dari eksekusi dari perintah ls.

makasih mas



Leave a Reply Cancel reply

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

CAPTCHA
Refresh

*

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

  • Artikel



  • Blogroll

    • DNS Propagation Checker
    • Instagram Photo/Video Downloader
    • PT. Excellent Infotama Kreasindo
  • Publishing

  • Recent Posts

    • Pengalaman Saat Sakit : Keluarga, Sahabat dan Bagaimana Jika…
    • Refleksi Setelah Sakit
    • Legacy
    • Bitcoin, Ethereum, Dogecoin
    • Penjualan Langsung : Keliling dan Mangkal
    • Perkembangan Usaha Penjualan Pisang “Zeze Zahra” Setelah 1 Bulan
    • Bekerja Keras dan Responsif
    • Bank Syariah Indonesia
    • Meningkatkan Nilai Tambah & Daya Tarik
    • Kios Aneka Pisang “Zeze Zahra II”