Shell与Java组合



客户端机器硬件信息收集


客户端硬件信息收集:


1. 编写脚本


参考文件:get_machine_code.sh


结合脚本程序,了解如下资源搜集的方法:


1)搜集主板ID编号;


2)搜集网卡MAC 地址;


3)硬件信息与自定义字符串加密;


脚本文件内容:


java1.png


2.调试脚本


[root@WLJY01 lesson12]# sh get_machine_code.sh 
41cec063968d5a4412f753778107c554   #机器码加密后的字符串


调试结果:


java2.png


3.对脚本进行加密


[root@WLJY01 lesson12]# shc  -v -r -T -f  get_machine_code.sh
[root@WLJY01 lesson12]# mv get_machine_code.sh.x get_machine_code
[root@WLJY01 lesson12]# ./get_machine_code 
41cec063968d5a4412f753778107c554


4.脚本注意的地方


字符串转换和删除的用法:


tr - translate or delete characters
echo "${baseboard_sn}${adapter0_physical_addr}"|tr '[a-z]' '[A-Z]'|tr -d ':'|tr -d '-'|tr '[0-9]' '[A-J]'



授权服务器为客户端授权


授权服务器为客户端授权:


1.了解授权服务器工作原理


这个环境使用的服务端为一台存储校验信息的数据库服务器,在启动服务前,会比较本地机器码与服务端存储的信息是否一致,一致则代表授权成功。


2.授权服务器端将客户端提供的机器码信息入库


这个过程相当于服务端对客户端的授权,参考客户端硬件信息收集脚本的结果。


#创建授权验证表
mysql> create table server_auth_info(id int AUTO_INCREMENT,server_name char(50), auth_code char(50) , primary key(id,server_name));
 
# 为主机名cloud_app1 的客户端IP地址进行授权
mysql> insert into server_auth_info(`server_name`,`auth_code`) values('cloud_app1','41cec063968d5a4412f753778107c554');
Query OK, 1 row affected (0.00 sec)



在授权服务器器上编写授权校验脚本


1.编写授权校验脚本


[root@WLJY01 lesson12]# cat check_middleware_auth.sh


注意观察如何与服务端做机器码对比


脚本文件内容:


java3.png


2.调试授权校验脚本


[root@WLJY01 lesson12]# sh check_middleware_auth.sh 
True


调试结果:


java4.png


思考:


如果返回结果为true ,则代表什么?//true 有成功授权


如果返回结果为false,又代表什么?//false  没有过成功授权


3.加密授权检验脚本


[root@WLJY01 lesson12]# shc  -v -r -T -f  check_middleware_auth.sh 
[root@WLJY01 lesson12]# mv check_middleware_auth.sh.x  check_middleware_auth


注意:java 程序调用的是加密的授权检验脚本。



客户端java程序调用授权检验脚本完成服务启动


JAVA程序调用授权脚本验证是否成功授权


1.编写java 程序


/root/test/src/Authorize.java

核心地方是java 如何调用shell程序


Process process = null;  
process =Runtime.getRuntime().exec("/bin/sh  /home/liutaostdio/myscript/lesson12/callcmd.sh");


Java文件源代码:


java5.png


java6.png


2.编译java程序


[root@WLJY01 src]# cat compile_java.sh


其中最主要的是如下两行:


javac -d ../bin/  ./Authorize.java


编译:


java7.png


3.执行class文件


/root/test/exec_class.sh


Class文件内容:


#!/bin/sh
for jarfile in  / root / test / lib / * . jar
  do
    CLASSPATH = $CLASSPATH : $ jarfile
  done
 
#echo $CLASSPATH
 
java -cp . : $ { CLASSPATH } com / lesson 12 / platform / callshell / Authorize

 

执行方法最主要的参考如下:


java -cp .:${CLASSPATH}   com/lesson12/platform/callshell/Authorize


java8.png


如果脚本返回值为true ,则代表获得授权成功,则启动本地服务。



课后作业


1.掌握客户端服务授权的流程及检验的方法;


2. 掌握客户端机器码的收集方法;


3. 掌握java程序如何调用shell脚本语言,完成客户端授权认证的。



【本文由麦子学院独家原创,转载请注明出处并保留原文链接】

logo
© 2012-2016 www.maiziedu.com
蜀ICP备13014270号-4 Version 5.0.0 release20160127

麦子大聚惠,豪华礼包你领了吗?

客服热线 400-862-8862

回到顶部