Supermirco IPMI KVM: connexion à distance sans webbrowser

J'essaie de me connecter avec l'IPMI connexion à distance(KVM) sans l'utilisation de l'op le webbrowser ou IPMIview outil. Mais jusqu'à présent aucune chance.

Le premier pense que j'ai fait est le lancement du "jviewer.jnlp" avec javaws. Ce fichier sera créé par l'IPMI site web si vous appuyez sur la "Connexion à Distance". Cette solution fonctionne jusqu'à ce que le web de la fermeture de la session. J'ai essayer de remplacer l'argument chiffré avec le nom d'utilisateur et mot de passe. Mais de toute façon il y a l'id de session intégré.

jviewer.jnpl fichier:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="https://192.168.99.201/Java">
<information>
<title>JViewer</title>
<vendor>American Megatrends, Inc.</vendor>
<description kind="one-line">JViewer Console Redirection Application</description>
<description kind="tooltip">JViewer Console Redirection Application</description>
<description kind="short">
JViewer enables a user to view the video display of managed server via KVM.  
It also enables the user to redirect his local keyboard, mouse for managing the server remotely.
</description>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.5+"/>
<jar href="release/JViewer.jar"/>
</resources>
<resources os="Windows" arch="x86">
<j2se version="1.5+"/>
<nativelib href="release/Win32.jar"/>
</resources>    
<resources os="Windows" arch="amd64">
<j2se version="1.5+"/>
<nativelib href="release/Win64.jar"/>
</resources>
<resources os="Linux"  arch="x86">
<j2se version="1.5+"/>
<nativelib href="release/Linux_x86_32.jar"/>
</resources>
<resources os="Linux"  arch="i386">
<j2se version="1.5+"/>
<nativelib href="release/Linux_x86_32.jar"/>
</resources>
<resources os="Linux" arch="x86_64">
<j2se version="1.5+"/>
<nativelib href="release/Linux_x86_64.jar"/>
</resources>    
<resources os="Linux" arch="amd64">
<j2se version="1.5+"/>
<nativelib href="release/Linux_x86_64.jar"/>
</resources>
<resources os="Mac OS X" arch="i386">
<j2se version="1.5+"/>
<nativelib href="release/Mac32.jar"/>
</resources>
<application-desc>
<argument>192.168.99.201</argument>
<argument>5901</argument>
<argument>Hnda9A159AwMjwnF</argument>
<argument>0</argument>
<argument>0</argument>
<argument>5120</argument>
<argument>5123</argument>
<argument>511</argument>
<argument>5900</argument>
<argument>1</argument>
<argument>EN</argument>
<argument>HEWKovXQO2Fp7FEMho6LrM4kzTPFHPyB000</argument>
</application-desc>
</jnlp>

L'argument le nom d'utilisateur et le mot de passe de remplacement ne fonctionne que si le jnlp est nommé comme "le lancement.jnlp" Certains Supermicro IPMI allons utiliser une structure différente.

Deuxième j'essaie de me connecter avec le IPMIview version de l'outil 2.9.32. Que de travail, de sorte que la connexion est ok. Sais-je essayer de la connecter en utilisant les pots de la IPMIview. Remplacer l'hôte avec l'IPMI IP

java -Djava.library.path=. -jar iKVM.jar host ADMIN ADMIN null 5900 2623 2 0

Cela va ouvrir la connexion à distance, mais donne un "échec de la Connexion" erreur.

java -Djava.library.path=. -jar JViewerX9.jar host ADMIN ADMIN

Aussi le même résultat: échec de la Connexion
L'échec de la connexion est livré avec une boîte d'alerte. Sur OK est fermé, l'application

Certains IPMI info:

# ipmitool mc info
Device ID                 : 32
Device Revision           : 1
Firmware Revision         : 2.4
IPMI Version              : 2.0
Manufacturer ID           : 47488
Manufacturer Name         : Unknown (0xB980)
Product ID                : 43707 (0xaabb)
Product Name              : Unknown (0xAABB)
Device Available          : yes
Provides Device SDRs      : no
Additional Device Support :
Sensor Device
SDR Repository Device
SEL Device
FRU Inventory Device
IPMB Event Receiver
IPMB Event Generator
Chassis Device
Aux Firmware Rev Info     : 
0x01
0x00
0x00
0x00

Une réinitialisation à froid "ipmitool mc réinitialisation à froid" ne fonctionne pas.

J'espère que quelqu'un sait ce que l'argument de dire pour le fichier jnlp ou quelqu'un a une solution pour ce problème

Edit:
J'ai essayer la réponse de Maxime Akristiniy et est venu avec le code suivant:

package com.thalesgroup.nl.perftools;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.util.List;
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.Page;
import com.gargoylesoftware.htmlunit.ScriptResult;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.WebResponse;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlPasswordInput;
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
import com.gargoylesoftware.htmlunit.util.Cookie;
public class IpmiRemoteViewer {
public static void main(String[] args)
throws FailingHttpStatusCodeException, MalformedURLException,
IOException {
String username = "ADMIN";
String password = "ADMIN";
String ip = "192.168.99.150";
final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getCookieManager().setCookiesEnabled(true);
webClient.getOptions().setUseInsecureSSL(true);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getCookieManager().addCookie(
new Cookie(ip, "WEBVAR_USERNAME", username));
webClient.getCookieManager().addCookie(
new Cookie(ip, "WEBVAR_PASSWORD", password));
HtmlPage page1 = webClient.getPage("http://" + ip);
List<HtmlForm> forms = page1.getForms();
if (!forms.isEmpty()) {
HtmlForm form = forms.get(0);
HtmlSubmitInput button = (HtmlSubmitInput) form.getInputsByValue(
"Login").get(0);
//username
HtmlTextInput textField = form.getInputByName("T1");
textField.setValueAttribute(username);
//password
HtmlPasswordInput textField2 = form.getInputByName("T2");
textField2.setValueAttribute(password);
HtmlPage page2 = button.click();
webClient.waitForBackgroundJavaScript(500);
//Do it again
form = page2.getForms().get(0);
//username
textField = form.getInputByName("T1");
textField.setValueAttribute(username);
//password
textField2 = form.getInputByName("T2");
textField2.setValueAttribute(password);
ScriptResult scriptResult = page2.executeJavaScript("DoLogin();");
//Print the index.html page
System.out.println(scriptResult.getNewPage().toString());
//Print the session id
for (Cookie cookie : webClient.getCookieManager().getCookies()) {
if (cookie.getName().equals("SessionCookie")) {
String sessionId = cookie.getValue();
System.out.println("Session id = " + sessionId);
}
}
//Download the jviewer.jnlp file
Page page5 = webClient.getPage("http://" + ip
+ "/Java/jviewer.jnlp?EXTRNIP=" + ip + "&JNLPSTR=JViewer");
WebResponse response = page5.getWebResponse();
InputStream inputStream = response.getContentAsStream();
writeToFile("viewer.jnlp", inputStream);
}
}
protected static void writeToFile(String filename, InputStream inputStream) {
OutputStream outputStream = null;
try {
File file = new File(filename);
//write the inputStream to a FileOutputStream
outputStream = new FileOutputStream(file);
int read = 0;
byte[] bytes = new byte[1024];
while ((read = inputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}

Seulement maintenant, il va écrire la page de connexion dans la visionneuse.fichier jnlp. Toujours pas de chance. J'ai réussi à lire le index.html la page qui est derrière la page de connexion. Mais la session est en cours de fermeture très rapide.

OriginalL'auteur Stock | 2014-10-02