java调用执行windows命令

    xiaoxiao2022-07-05  160

    序:

          先说说这个场景,其实我想的是不用远程连接服务器。通过其他活着的服务搞事情,理论上应该是所有的命令都可以执行的。我这里只是试验性的,可行性,所以我就做了个每次执行一条命令的。

    一、先说说使用的执行器

         这里没有使用第三方的jar,直接使用的是jdk提供的Process。先看我写的工具类吧,我这里因为服务器是windows,所以用的编码是gkb2312的。不过保留了支持多命令同时执行,没有验证。

    工具类

    public class ProcessUtil {     public static String runShell(String[] shStrArr) throws Exception {         StringBuffer sb = new StringBuffer();         sb.append("-----------result--------------");         sb.append("\n");         Process process = null;         //List<String> processList = new ArrayList<String>(); 多命令         try {             if(!ArrayUtils.isEmpty(shStrArr)) {                 String sh = "";                 for(int i = 0;i < shStrArr.length;i++) {                     String tmpSh = shStrArr[i];                     sh += tmpSh;                     if(i != shStrArr.length - 1) {                         sh += "&&";   //网上说多条命令使用这个符号连起来                     }                 }                 process = Runtime.getRuntime().exec(sh);                 BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream(),"gb2312"));                 String line = "";                 while ((line = input.readLine()) != null) {                     //processList.add(line);                     sb.append(line);                     sb.append("\n");                 }                 process.waitFor();                   input.close();             }                      } catch (Exception e) {             //e.printStackTrace();             sb.append(e.getCause().getMessage());         }         /*if(CollectionUtils.isNotEmpty(processList)) {                          for (String line : processList) {                 //System.out.println(line);                 sb.append(line);                 sb.append("\n");             }         }*/                  return sb.toString();              }

    二、ajax方法返回结果

          因为初衷就是试验用活着的服务启其他服务,所以提供一个对外的Ajax接口。

    ajax方法代码

    @ResponseBody     @RequestMapping(value = "/shellComand" , method = RequestMethod.POST)     public void shellComand(@RequestParam("shellComand") String shellComand, HttpServletRequest request, HttpServletResponse response) throws IOException {

            String rs = "";         try{             String[] shArr = new String[1];             shArr[0] = shellComand;             rs = ProcessUtil.runShell(shArr);

            }catch(Exception e){             rs ="操作失败,请稍后重试!";             e.printStackTrace();         }

            //返回数据对象         writeToPage(rs, response);     }

    三、测试

         这里用postman测试。

    看到没,下面就是返回结果。另外要说的就是如果执行的是cmd/bat命令,那会显示一直请求,实际上已经执行了,这个ajax方法跟工具类方法大家可以自行优化下。

    要执行cmd/bat命令,实际上就是cmd后面的参数改下,例如

    cmd.exe /k start D:\application\push\zookeeper-3.4.14\bin\zkServer.cmd

    亲测可行,linux基本也是这个逻辑,然后这个能也可以做坏事,你懂的。如果这个 接口不登录就可以调用,不做安全校验,那就是很微信的,毕竟可以执行好多命令的。下面补充可以执行的命令,补充内容来源网络,大家自己试。

    cmd /c dir 是执行完dir命令后关闭命令窗口。

    cmd /k dir 是执行完dir命令后不关闭命令窗口。

    cmd /c start dir 会打开一个新窗口后执行dir指令,原窗口会关闭。

    cmd /k start dir 会打开一个新窗口后执行dir指令,原窗口不会关闭。

    可以用cmd /?查看帮助信息。

    ★CMD命令★

    1. gpedit.msc-----组策略

    2. sndrec32-------录音机

    3. Nslookup-------IP地址侦测器

    4. explorer-------打开资源管理器

    5. logoff---------注销命令

    6. tsshutdn-------60秒倒计时关机命令

    7. lusrmgr.msc----本机用户和组

    8. services.msc---本地服务设置

    9. oobe/msoobe /a----检查XP是否激活

    10. notepad--------打开记事本

    11. cleanmgr-------垃圾整理

    12. net start messenger----开始信使服务

    13. compmgmt.msc---计算机管理

    14. net stop messenger-----停止信使服务

    15. conf-----------启动netmeeting

    16. dvdplay--------DVD播放器

    17. charmap--------启动字符映射表

    18. diskmgmt.msc---磁盘管理实用程序

    19. calc-----------启动计算器

    20. dfrg.msc-------磁盘碎片整理程序

    21. chkdsk.exe-----Chkdsk磁盘检查

    22. devmgmt.msc--- 设备管理器

    23. regsvr32 /u *.dll----停止dll文件运行

    24. drwtsn32------ 系统医生

    25. rononce -p ----15秒关机

    26. dxdiag---------检查DirectX信息

    27. regedt32-------注册表编辑器

    28. Msconfig.exe---系统配置实用程序

    29. rsop.msc-------组策略结果集

    30. mem.exe--------显示内存使用情况

    31. regedit.exe----注册表

    32. winchat--------XP自带局域网聊天

    33. progman--------程序管理器

    34. winmsd---------系统信息

    35. perfmon.msc----计算机性能监测程序

    36. winver---------检查Windows版本

    37. sfc /scannow-----扫描错误并复原

    38. taskmgr-----任务管理器(2000/xp/2003

    39. winver---------检查Windows版本

    40. wmimgmt.msc----打开windows管理体系结构(WMI)

    41. wupdmgr--------windows更新程序

    42. wscript--------windows脚本宿主设置

    43. write----------写字板

    44. winmsd---------系统信息

    45. wiaacmgr-------扫描仪和照相机向导

    46. winchat--------XP自带局域网聊天

    47. mem.exe--------显示内存使用情况

    48. Msconfig.exe---系统配置实用程序

    49. mplayer2-------简易widnows media player

    50. mspaint--------画图板

    51. mstsc----------远程桌面连接

    52. mplayer2-------媒体播放机

    53. magnify--------放大镜实用程序

    54. mmc------------打开控制台

    55. mobsync--------同步命令

    56. dxdiag---------检查DirectX信息

    57. drwtsn32------ 系统医生

    58. devmgmt.msc--- 设备管理器

    59. dfrg.msc-------磁盘碎片整理程序

    60. diskmgmt.msc---磁盘管理实用程序

    61. dcomcnfg-------打开系统组件服务

    62. ddeshare-------打开DDE共享设置

    63. dvdplay--------DVD播放器

    64. net stop messenger-----停止信使服务

    65. net start messenger----开始信使服务

    66. notepad--------打开记事本

    67. nslookup-------网络管理的工具向导

    68. ntbackup-------系统备份和还原

    69. narrator-------屏幕“讲述人”

    70. ntmsmgr.msc----移动存储管理器

    71. ntmsoprq.msc---移动存储管理员操作请求

    72. netstat -an----(TC)命令检查接口

    73. syncapp--------创建一个公文包

    74. sysedit--------系统配置编辑器

    75. sigverif-------文件签名验证程序

    76. sndrec32-------录音机

    77. shrpubw--------创建共享文件夹

    78. secpol.msc-----本地安全策略

    79. syskey---------系统加密,一旦加密就不能解开,保护windows xp系统的双重密码

    80. services.msc---本地服务设置

    81. Sndvol32-------音量控制程序

    82. sfc.exe--------系统文件检查器

    83. sfc /scannow---windows文件保护

    84. tsshutdn-------60秒倒计时关机命令

    3. 84. tsshutdn-------60秒倒计时关机命令

    85. tourstart------xp简介(安装完成后出现的漫游xp程序)

    86. taskmgr--------任务管理器

    87. eventvwr-------事件查看器

    88. eudcedit-------造字程序

    89. explorer-------打开资源管理器

    90. packager-------对象包装程序

    91. perfmon.msc----计算机性能监测程序

    92. progman--------程序管理器

    93. regedit.exe----注册表

    94. rsop.msc-------组策略结果集

    95. regedt32-------注册表编辑器

    96. rononce -p ----15秒关机

    97. regsvr32 /u *.dll----停止dll文件运行

    98. regsvr32 /u zipfldr.dll------取消ZIP支持

    99. cmd.exe--------CMD命令提示符

    100. chkdsk.exe-----Chkdsk磁盘检查

    101. certmgr.msc----证书管理实用程序

    102. calc-----------启动计算器

    103. charmap--------启动字符映射表

    104. cliconfg-------SQL SERVER 客户端网络实用程序

    105. Clipbrd--------剪贴板查看器

    106. conf-----------启动netmeeting

    107. compmgmt.msc---计算机管理

    108. cleanmgr-------垃圾整理

    109. ciadv.msc------索引服务程序

    110. osk------------打开屏幕键盘

    111. odbcad32-------ODBC数据源管理器

    112. oobe/msoobe /a----检查XP是否激活

    113. lusrmgr.msc----本机用户和组

    114. logoff---------注销命令

    115. iexpress-------木马捆绑工具,系统自带

    116. Nslookup-------IP地址侦测器

    117. fsmgmt.msc-----共享文件夹管理器

    118. utilman--------辅助工具管理器

    119. gpedit.msc-----组策略

    120. explorer-------打开资源管理器

     

     

    最新回复(0)