Tuesday, February 2, 2010

ssh sederhana

Ini ada sedikit tutorial yang berhubungan dengan SSH untuk mematikan server dengan tidak perlu menggunakan Tool ssh seperti putty.ok sebelum kita mulai kita tentunya harus mempersiapkan
peralatan untuk merakit sebuah aplikasi (bukan BOM ya..itu ajaran sesat ya seperti NURDIN dkk),yaitu :
1.tentunya komputer or laptop yang tidak jelek-jelek amat
  ku menggunakan laptop dualcore
2.Eclipse galileo
3.Library JSCH
4.Test server yang kita instal sendiri di virtualbox menggunakan centos
4.Rokok kita ganti dengan roti,biskuit dan Susu (biar sehat yah)
5.Musik kita ganti dengan murattal biar hati tenang dan ingat Trus ma Alloh.
6.Singkirkan hal yang mengganggu kosentrasi (FOCUS,FOCUS and FOCUS)
7.kita mulai dengan Bismillah.

ni Codinga nya :

package com.andia.server.jsch;

import com.jcraft.jsch.*;
import java.awt.*;
import javax.swing.*;
import java.io.*;

public class Exec {
    public static void main(String[] arg) {
        try {
            JSch jsch = new JSch();

            String host = null;
            if (arg.length > 0) {
                host = arg[0];
            } else {
                // memasukkan input oleh user
                host = JOptionPane.showInputDialog("Enter username@hostname",
                        "root@192.168.0.185");
            }
            System.out.println("Host = "+host);

            String user = host.substring(0, host.indexOf('@'));
            System.out.println("User = "+user);

           
            host = host.substring(host.indexOf('@') + 1);
            System.out.println("Host = "+host);
           
            //Sesi mengambil string user,host,port agar bisa koneksi kedalam server
            Session session = jsch.getSession(user, host, 22);

            // username and password will be given via UserInfo interface.
            UserInfo ui = new MyUserInfo();
            session.setUserInfo(ui);
            session.connect();
           
            //input dari user untuk melakukan eksekusi
            String command = JOptionPane.showInputDialog("Enter command",
                    "shutdown");
           
            Channel channel = session.openChannel("exec");
            ((ChannelExec) channel).setCommand(command);

            // X Forwarding
            // channel.setXForwarding(true);

            // channel.setInputStream(System.in);
            channel.setInputStream(null);

            // channel.setOutputStream(System.out);

            // FileOutputStream fos=new FileOutputStream("/tmp/stderr");
            // ((ChannelExec)channel).setErrStream(fos);
            ((ChannelExec) channel).setErrStream(System.err);

            InputStream in = channel.getInputStream();

            channel.connect();

            byte[] tmp = new byte[1024];
            while (true) {
                while (in.available() > 0) {
                    int i = in.read(tmp, 0, 1024);
                    if (i < 0)
                        break;
                    System.out.print(new String(tmp, 0, i));
                }
                if (channel.isClosed()) {
                    System.out.println("exit-status: "
                            + channel.getExitStatus());
                    break;
                }
                try {
                    Thread.sleep(1000);
                } catch (Exception ee) {
                }
            }
            channel.disconnect();
            session.disconnect();
        } catch (Exception e) {
            System.out.println(e);
        }
    }

    public static class MyUserInfo implements UserInfo, UIKeyboardInteractive {
        public String getPassword() {
            return passwd;
        }

        public boolean promptYesNo(String str) {
            Object[] options = { "yes", "no" };
            int foo = JOptionPane.showOptionDialog(null, str, "Warning",
                    JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE,
                    null, options, options[0]);
            return foo == 0;
        }

        String passwd;
        JTextField passwordField = (JTextField) new JPasswordField(20);

        public String getPassphrase() {
            return null;
        }

        public boolean promptPassphrase(String message) {
            return true;
        }

        public boolean promptPassword(String message) {
            Object[] ob = { passwordField };
            int result = JOptionPane.showConfirmDialog(null, ob, message,
                    JOptionPane.OK_CANCEL_OPTION);
            if (result == JOptionPane.OK_OPTION) {
                passwd = passwordField.getText();
                return true;
            } else {
                return false;
            }
        }

        public void showMessage(String message) {
            JOptionPane.showMessageDialog(null, message);
        }

        final GridBagConstraints gbc = new GridBagConstraints(0, 0, 1, 1, 1, 1,
                GridBagConstraints.NORTHWEST, GridBagConstraints.NONE,
                new Insets(0, 0, 0, 0), 0, 0);
        private Container panel;

        public String[] promptKeyboardInteractive(String destination,
                String name, String instruction, String[] prompt, boolean[] echo) {
            panel = new JPanel();
            panel.setLayout(new GridBagLayout());

            gbc.weightx = 1.0;
            gbc.gridwidth = GridBagConstraints.REMAINDER;
            gbc.gridx = 0;
            panel.add(new JLabel(instruction), gbc);
            gbc.gridy++;

            gbc.gridwidth = GridBagConstraints.RELATIVE;

            JTextField[] texts = new JTextField[prompt.length];
            for (int i = 0; i < prompt.length; i++) {
                gbc.fill = GridBagConstraints.NONE;
                gbc.gridx = 0;
                gbc.weightx = 1;
                panel.add(new JLabel(prompt[i]), gbc);

                gbc.gridx = 1;
                gbc.fill = GridBagConstraints.HORIZONTAL;
                gbc.weighty = 1;
                if (echo[i]) {
                    texts[i] = new JTextField(20);
                } else {
                    texts[i] = new JPasswordField(20);
                }
                panel.add(texts[i], gbc);
                gbc.gridy++;
            }

            if (JOptionPane.showConfirmDialog(null, panel, destination + ": "
                    + name, JOptionPane.OK_CANCEL_OPTION,
                    JOptionPane.QUESTION_MESSAGE) == JOptionPane.OK_OPTION) {
                String[] response = new String[prompt.length];
                for (int i = 0; i < prompt.length; i++) {
                    response[i] = texts[i].getText();
                }
                return response;
            } else {
                return null; // cancel
            }
        }
    }

}

Dan Output yang kita hasilkan adalah :
                                         

                                                            Masukkan user dan host

                                                           Silakan klik Button Yes
                                                          Masukkan Password
 
                                                          Masukkan Perintah



dan OFF deh..

No comments: