Execute Linux Shell Command within Java Program

Share

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.

Muhammad Rivai Andargini

Artikel Terkait

Masukkan alamat email pada form dibawah ini untuk menerima update mengenai artikel, tutorial atau tips terbaru dari website ini:

Delivered by FeedBurner

3 Responses for “Execute Linux Shell Command within Java Program”

  1. Ndut says:

    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

  2. Vavai says:

    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

  3. Ndut says:

    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

Notify me of followup comments via e-mail. You can also subscribe without commenting.

Link

Switch to our mobile site

Log in - BlogNews Theme by Gabfire themes