Avatar billede california Nybegynder
25. maj 2008 - 22:21 Der er 5 kommentarer og
1 løsning

Telnet kommando fra java

Hej Forum,

Jeg har uden held forsøgt at lave en forbindelse via telnet og udføre en kommando. Forbindelsen bliver oprettet og jeg modtager login-beskeden fra enheden, men kan ikke sende en kommando til den.
Måden hvorpå jeg forsøgte kan se her efterfølgende og håber der er en der kan spotte fejlen.

import java.io.DataInputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;

public class sb {
    public static void main(String[] args) {
        try {
            try {
                Socket MyClient = new Socket("192.168.1.2", 4444);
                DataInputStream input = new DataInputStream(MyClient.getInputStream());
                PrintStream output = new PrintStream(MyClient.getOutputStream());
                String t = "";
                while ((t = input.readLine()) != null)
                    System.out.println(t);

                output.println("reboot"); // Det er denne kommando der ikke bliver udført

                output.close();
                input.close();
                MyClient.close();
            } catch (IOException e) {
                System.out.println(e);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
Avatar billede arne_v Ekspert
25. maj 2008 - 22:25 #1
TELNET er en lusket protokol. Det er "næsten" en plain socket. Men det virker
aldrig godt med brug af en plain socket.

Hent Jakarta Commons Net - de har en TelnetClient klasse, som jeg tror på vil
være nemmere at bruge.
Avatar billede california Nybegynder
25. maj 2008 - 22:28 #2
Hej Arne,

Det vil jeg prøve. Men det undre mig at det er nødvendigt da det kun er én enkelt kommando jeg skal kunne afsende.
Avatar billede california Nybegynder
25. maj 2008 - 22:47 #3
Hej Arne,

Nu har jeg også prøvet med TelnetClient med samme reslutat; der logges ind og jeg modtager velkomstbeskeden, men jeg kan ikke udføre kommandoen.
Her følger mit mislykket forsøg:

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import org.apache.commons.net.telnet.TelnetClient;

public class sb {
    public static void main(String[] args) throws Exception, IOException {
        TelnetClient telnetConnection = new TelnetClient();
        telnetConnection.connect("192.168.1.2", 4444);

        DataInputStream inputStream = new DataInputStream(telnetConnection.getInputStream());
        DataOutputStream outputStream = new DataOutputStream(telnetConnection.getOutputStream());
       
        String tmp = "";
        while ((tmp = inputStream.readLine()) != null)
            System.out.println(tmp);

        outputStream.writeUTF("reboot");
    }
}
Avatar billede arne_v Ekspert
25. maj 2008 - 22:56 #4
Prøv og erstat DataInputStream med BufferedReader og DataOutputStream med PrintStream.

DataXxxxStream er til binære filer.
Avatar billede california Nybegynder
25. maj 2008 - 23:04 #5
Hej Arne,

Tak for hjælpen, nu kom det til at virke. Kan du ikke oprette et svar?
Her kommer den virkende kode så andre fremover vil kunne få hjælp til at udføre en telnet kommando vha. java.

For at køre koden skal http://commons.apache.org/net/ tilføjes til projektes classpath.

import java.io.IOException;
import java.io.PrintStream;
import org.apache.commons.net.telnet.TelnetClient;

public class sb {
    public static void main(String[] args) throws Exception, IOException {
        TelnetClient telnetConnection = new TelnetClient();
        telnetConnection.connect("192.168.1.2", 4444);

        PrintStream outputStream = new PrintStream(telnetConnection.getOutputStream());
        outputStream.println("attract");   

        outputStream.close();
        telnetConnection.disconnect();
    }
}
Avatar billede arne_v Ekspert
25. maj 2008 - 23:08 #6
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester