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
Vous devez vous connecter pour publier un commentaire.
Télécharger le jviewer.fichier jnlp, mais de la première connexion.
Puis démarrez le jviewer.fichier jnlp avec javaws
OriginalL'auteur Stock
Supermicro utilise American Megatrends' MegaRAC logiciel, et jviewer est une partie d'elle. MegaRAC propose un autonome jviewer application. Vous devriez être en mesure d'en faire la demande à partir de Supermicro.
OriginalL'auteur Alexander Amelkin
vous devez vous connecter à l'interface IPMI serveur et cookie ensemble des variables: WEBVAR_USERNAME, WEBVAR_PASSWORD
vous recevrez en réponse à cookie variable SESSION_COOKIE
téléchargez http://" + IP + "/Java/jviewer.jnlp?EXTRNIP=" + IP + "&JNLPSTR=JViewer
pour votre jnlp
ou utiliser les jnlp et remplacer reçu cookie avec votre cookie :
la connexion à l'url: "http://" + IP + "/rpc/WEBSES/créer.asp"
OriginalL'auteur Maxim Akristiniy