Dúvida sobre Nova classe Java


#1

Olá a todos, eu tenho uma classe java que preciso para ligar computadores remotamente que desejo colocar no ScadaBR. Como sou pouco versado em tomcat e ainda estou no meio do curso de java (não sei muito) Eu gostaria de obter ajuda para fazer essa classe java funcionar no ScadaBR talvez chamado por um script.

Eu preciso desligar e ligar um conjunto de computadores em horários determinados. A Classe java criada basicamente envia um pacote UDP com o mac-address da placa de rede que se deseja dar boot.

Basicamente coloquei a classe na pasta
ScadaBR\webapps\ScadaBR\WEB-INF\classes mas nao consigo chamar essa classe pelo tomcat.
Qualquer ajuda será bem vinda.

Basicamente do console (prompt do DOS) eu chamo:java WakeOnLan umIP 00-11-22-33-44-55
ele recebe pelo prompt se o pacote foi enviado ou não.

Abaixo segue os sources da classe Java:

import java.io.*;
import java.net.*;

public class WakeOnLan {
    
    public static final int PORT = 9;    
    
    public static void main(String[] args) {
        System.out.println("SERCOM WakeOnLan - 0.01a  by Wagner de Queiroz");
        
        if (args.length != 2) {
            System.out.println("Uso: java WakeOnLan <broadcast-ip> <mac-address>");
            System.out.println("Examplo: java WakeOnLan 192.168.0.255 00:0D:61:08:22:4A");
            System.out.println("      ou java WakeOnLan 192.168.0.255 00-0D-61-08-22-4A");
            System.exit(1);
        }
        
        String ipStr = args[0];
        String macStr = args[1];
        
        try {
            byte[] macBytes = getMacBytes(macStr);
            byte[] bytes = new byte[6 + 16 * macBytes.length];
            for (int i = 0; i < 6; i++) {
                bytes[i] = (byte) 0xff;
            }
            for (int i = 6; i < bytes.length; i += macBytes.length) {
                System.arraycopy(macBytes, 0, bytes, i, macBytes.length);
            }
            
            InetAddress address = InetAddress.getByName(ipStr);
            DatagramPacket packet = new DatagramPacket(bytes, bytes.length, address, PORT);
            DatagramSocket socket = new DatagramSocket();
            socket.send(packet);
            socket.close();
            
            System.out.println("Pacote Wake-on-LAN Enviado!");
        }
        catch (Exception e) {
            System.out.println("Falha no envio do pacote Wake-on-LAN: + e");
            System.exit(1);
        }
        
    }
    
    private static byte[] getMacBytes(String macStr) throws IllegalArgumentException {
        byte[] bytes = new byte[6];
        String[] hex = macStr.split("(\\:|\\-)");
        if (hex.length != 6) {
            throw new IllegalArgumentException("ERRO: Endereço MAC address Invalido.");
        }
        try {
            for (int i = 0; i < 6; i++) {
                bytes[i] = (byte) Integer.parseInt(hex[i], 16);
            }
        }
        catch (NumberFormatException e) {
            throw new IllegalArgumentException("ERRO: Digitos hex inválidos do MAC address.");
        }
        return bytes;
    }
    
   
}

#2

Pergunta interessante, mas vou marcar para nossos amigos poderem ajudar.
Vou divulgar o post.