远程管理之jnlp协议应用
一、JNLP技术简介
远程管理技术早已不是什么新技术了,早在2008年的时候我最早接触了IBM的远程管理卡二代。只需给卡在类似于开机自启动的时候配置一个IP地址,主机只要不断电,无论OS是否正常,都是可以通过web界面进行服务器的硬管理(关机、重启、kvm console查看、日志收集)等。说白了该卡也是集成了一个带有微型OS的智能硬件。虽然十年左右过去了,远程管理技术基本还是之前的那一套,只不过HP\IBM\华为等都有各自的底层设计。本篇就先从JNLP讲起。
Java Network Launching Protocol (JNLP,java网络加载协议) ,说白了JNLP是一个以xml格式书写的一个文件,其在文件内指定了basecode的地址,调用的jar包,及一些资源参数。该JNLP文件指定的内容会被javaws程序调用,最终启动一个console kvm界面。这里以浪潮服务器的管理口产生的JNLP文件为例,其内容如下:
1<?xml version="1.0" encoding="UTF-8"??>
2<jnlp codebase="http://200.200.0.7:80/Java" spec="1.0+">
3 <information>
4 <title>JViewer</title>
5 <vendor>American Megatrends, Inc.</vendor>
6 <description kind="one-line">JViewer Console Redirection Application</description>
7 <description kind="tooltip">JViewer Console Redirection Application</description>
8 <description kind="short">
9 JViewer enables a user to view the video display of managed server via KVM.
10 It also enables the user to redirect his local keyboard, mouse for managing the server remotely.
11 </description>
12 </information>
13 <security>
14 <all-permissions></all-permissions>
15 </security>
16 <resources>
17 <j2se version="1.5+"></j2se>
18 <jar href="release/JViewer.jar"></jar>
19 </resources>
20 <resources>
21 <j2se version="1.5+"></j2se>
22 <jar href="release/JViewer-SOC.jar"></jar>
23 </resources>
24 <resources arch="x86" os="Windows">
25 <j2se version="1.5+"></j2se>
26 <nativelib href="release/Win32.jar"></nativelib>
27 </resources>
28 <resources arch="amd64" os="Windows">
29 <j2se version="1.5+"></j2se>
30 <nativelib href="release/Win64.jar"></nativelib>
31 </resources>
32 <resources arch="x86" os="Linux">
33 <j2se version="1.5+"></j2se>
34 <nativelib href="release/Linux_x86_32.jar"></nativelib>
35 </resources>
36 <resources arch="i386" os="Linux">
37 <j2se version="1.5+"></j2se>
38 <nativelib href="release/Linux_x86_32.jar"></nativelib>
39 </resources>
40 <resources arch="x86_64" os="Linux">
41 <j2se version="1.5+"></j2se>
42 <nativelib href="release/Linux_x86_64.jar"></nativelib>
43 </resources>
44 <resources arch="amd64" os="Linux">
45 <j2se version="1.5+"></j2se>
46 <nativelib href="release/Linux_x86_64.jar"></nativelib>
47 </resources>
48 <resources arch="i386" os="Mac OS X">
49 <j2se version="1.5+"></j2se>
50 <nativelib href="release/Mac32.jar"></nativelib>
51 </resources>
52 <resources arch="x86_64" os="Mac OS X">
53 <j2se version="1.5+"></j2se>
54 <nativelib href="release/Mac64.jar"></nativelib>
55 </resources>
56 <application-desc>
57 <argument>-apptype</argument>
58<argument>JViewer</argument>
59<argument>-hostname</argument>
60<argument>200.200.0.7</argument>
61<argument>-kvmtoken</argument>
62<argument>WNqrbKDVEvbIPSRx</argument> //kvm key信息
63<argument>-kvmsecure</argument>
64<argument>0</argument>
65<argument>-kvmport</argument>
66<argument>7578</argument>
67<argument>-vmsecure</argument>
68<argument>0</argument>
69<argument>-cdstate</argument>
70<argument>1</argument>
71<argument>-fdstate</argument>
72<argument>1</argument>
73<argument>-hdstate</argument>
74<argument>1</argument>
75<argument>-cdport</argument>
76<argument>5120</argument>
77<argument>-fdport</argument>
78<argument>5122</argument>
79<argument>-hdport</argument>
80<argument>5123</argument>
81<argument>-cdnum</argument>
82<argument>1</argument>
83<argument>-fdnum</argument>
84<argument>1</argument>
85<argument>-hdnum</argument>
86<argument>1</argument>
87<argument>-userpriv</argument>
88<argument>255</argument>
89<argument>-lang</argument>
90<argument>EN</argument>
91<argument>-singleportenabled</argument>
92<argument>0</argument>
93<argument>-webcookie</argument>
94<argument>lfqvSO1qkMz3V1QIjx3kYeNtLDkxORWk006</argument> //session key信息
95 </application-desc>
96</jnlp>
二、JNLP文件的前世今生
这里还是以浪潮管理口(浪潮的服务器是真心烂,拿他说事不是给他打广告,没给我广告费,只是因为其简单而已)为例。我画了个图,如下:
1、访问http://管理口IP/rpc/WEBSES/create.asp 文件,需要使用登陆信息,如’WEBVAR_USERNAME=登陆用户名&WEBVAR_PASSWORD=登陆密码’ ,使用post请求,返回的页面信息里有SESSION_COOKIE信息;
2、后面调用http://管理口IP/Java/jviewer.jnlp?EXTRNIP=管理口IP&JNLPSTR=JViewer 页面,在通过get请求该页面时,会发送请求 cookie信息,而jviewer.jnlp会调用 <script src="../impl/session_expired_imp.js"></script>
文件进行session是否过期的验证。验证成功才会返回jnlp文件。
3、对于该型号服务器来说,jnlp文件里的内部基本都是相同的,不同的主要是kvmtoken 和 webcookie (session key)两个值。接下来使用java web start程序调用该文件就可以输出kvm console界面,如下:
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/inspur-jnlp/6086.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.