You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
5.5 KiB
Java
133 lines
5.5 KiB
Java
import com.veraxsystems.vxipmi.api.async.ConnectionHandle;
|
|
import com.veraxsystems.vxipmi.api.sync.IpmiConnector;
|
|
import com.veraxsystems.vxipmi.coding.commands.IpmiVersion;
|
|
import com.veraxsystems.vxipmi.coding.commands.PrivilegeLevel;
|
|
import com.veraxsystems.vxipmi.coding.commands.chassis.GetChassisStatus;
|
|
import com.veraxsystems.vxipmi.coding.commands.chassis.GetChassisStatusResponseData;
|
|
import com.veraxsystems.vxipmi.coding.commands.sdr.GetSdr;
|
|
import com.veraxsystems.vxipmi.coding.commands.sdr.GetSdrResponseData;
|
|
import com.veraxsystems.vxipmi.coding.commands.sdr.GetSensorReading;
|
|
import com.veraxsystems.vxipmi.coding.commands.sdr.GetSensorReadingResponseData;
|
|
import com.veraxsystems.vxipmi.coding.commands.sdr.ReserveSdrRepository;
|
|
import com.veraxsystems.vxipmi.coding.commands.sdr.ReserveSdrRepositoryResponseData;
|
|
import com.veraxsystems.vxipmi.coding.commands.sdr.record.CompactSensorRecord;
|
|
import com.veraxsystems.vxipmi.coding.commands.sdr.record.FullSensorRecord;
|
|
import com.veraxsystems.vxipmi.coding.commands.sdr.record.RateUnit;
|
|
import com.veraxsystems.vxipmi.coding.commands.sdr.record.ReadingType;
|
|
import com.veraxsystems.vxipmi.coding.commands.sdr.record.SensorRecord;
|
|
import com.veraxsystems.vxipmi.coding.payload.CompletionCode;
|
|
import com.veraxsystems.vxipmi.coding.payload.lan.IPMIException;
|
|
import com.veraxsystems.vxipmi.coding.protocol.AuthenticationType;
|
|
import com.veraxsystems.vxipmi.coding.security.CipherSuite;
|
|
import com.veraxsystems.vxipmi.common.TypeConverter;
|
|
import com.veraxsystems.vxipmi.connection.Connection;
|
|
|
|
|
|
import java.io.FileNotFoundException;
|
|
import java.io.IOException;
|
|
import java.net.InetAddress;
|
|
|
|
import java.util.List;
|
|
|
|
/**
|
|
* @ProjectName:
|
|
* @Description:
|
|
* @Param 传输参数
|
|
* @Return
|
|
* @Author: 曾文和
|
|
* @CreateDate: 2019/11/29 15:31
|
|
* @UpdateUser: 曾文和
|
|
* @UpdateDate: 2019/11/29 15:31
|
|
* @UpdateRemark: 更新说明
|
|
* @Version: 1.0
|
|
*/
|
|
public class test {
|
|
private static final int MAX_REPO_RECORD_ID = 65535;
|
|
|
|
private static final String hostname = "127.0.0.1";
|
|
|
|
private static final String username = "Administrator";
|
|
|
|
private static final String password = "zwh05966788561";
|
|
|
|
/**
|
|
* Size of the initial GetSdr message to get record header and size
|
|
*/
|
|
private static final int INITIAL_CHUNK_SIZE = 8;
|
|
|
|
/**
|
|
* Chunk size depending on buffer size of the IPMI server. Bigger values will improve performance. If server is
|
|
* returning "Cannot return number of requested data bytes." error during GetSdr command, CHUNK_SIZE should be
|
|
* decreased.
|
|
*/
|
|
private static final int CHUNK_SIZE = 16;
|
|
|
|
/**
|
|
* Size of SDR record header
|
|
*/
|
|
private static final int HEADER_SIZE = 5;
|
|
|
|
private int nextRecId;
|
|
|
|
public static void main(String[] args) {
|
|
IpmiConnector connector = null;
|
|
ConnectionHandle handle = null;
|
|
try {
|
|
connector = new IpmiConnector(8081);
|
|
System.out.println("Connector created");
|
|
|
|
// Create the connection and get the handle, specifiy IP address of the
|
|
// remote host. The connection is being registered in ConnectionManager,
|
|
// the handle will be needed to identify it among other connections
|
|
// (target IP address isn't enough, since we can handle multiple
|
|
// connections to the same host)
|
|
handle = connector.createConnection(InetAddress
|
|
.getByName("127.0.0.1"));
|
|
System.out.println("Connection created");
|
|
|
|
// Get available cipher suites list via getAvailableCipherSuites and
|
|
// pick one of them that will be used further in the session.
|
|
CipherSuite cs = connector.getAvailableCipherSuites(handle).get(3);
|
|
System.out.println("Cipher suite picked");
|
|
|
|
// Provide chosen cipher suite and privilege level to the remote host.
|
|
// From now on, your connection handle will contain these information.
|
|
connector.getChannelAuthenticationCapabilities(handle, cs,
|
|
PrivilegeLevel.User);
|
|
System.out.println("Channel authentication capabilities receivied");
|
|
|
|
// Start the session, provide username and password, and optionally the
|
|
// BMC key (only if the remote host has two-key authentication enabled,
|
|
// otherwise this parameter should be null)
|
|
connector.openSession(handle, "admin", "password", null);
|
|
System.out.println("Session open");
|
|
|
|
// Send some message and read the response
|
|
GetChassisStatusResponseData response = (GetChassisStatusResponseData) connector
|
|
.sendMessage(handle, new GetChassisStatus(IpmiVersion.V20, cs, AuthenticationType.RMCPPlus));
|
|
|
|
System.out.println("Received answer");
|
|
System.out.println("System power state is "
|
|
+ (response.isPowerOn() ? "up" : "down"));
|
|
} catch (FileNotFoundException e) {
|
|
e.printStackTrace();
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
} finally {
|
|
try {
|
|
// Close the session
|
|
connector.closeSession(handle);
|
|
System.out.println("Session closed");
|
|
|
|
// Close connection manager and release the listener port.
|
|
connector.tearDown();
|
|
System.out.println("Connection manager closed");
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
}
|