代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
Shell相关
作者:
明华
/ 发布于
2017/2/21
/
752
package com.blankj.utilcode.utils; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStreamReader; import java.util.List; /** * <pre> * author: Blankj * blog : http://blankj.com * time : 2016/8/7 * desc : Shell相关工具类 * </pre> */ public class ShellUtils { private ShellUtils() { throw new UnsupportedOperationException("u can't instantiate me..."); } /** * 是否是在root下执行命令 * * @param command 命令 * @param isRoot 是否需要root权限执行 * @return CommandResult */ public static CommandResult execCmd(String command, boolean isRoot) { return execCmd(new String[]{command}, isRoot, true); } /** * 是否是在root下执行命令 * * @param commands 多条命令链表 * @param isRoot 是否需要root权限执行 * @return CommandResult */ public static CommandResult execCmd(List<String> commands, boolean isRoot) { return execCmd(commands == null ? null : commands.toArray(new String[]{}), isRoot, true); } /** * 是否是在root下执行命令 * * @param commands 多条命令数组 * @param isRoot 是否需要root权限执行 * @return CommandResult */ public static CommandResult execCmd(String[] commands, boolean isRoot) { return execCmd(commands, isRoot, true); } /** * 是否是在root下执行命令 * * @param command 命令 * @param isRoot 是否需要root权限执行 * @param isNeedResultMsg 是否需要结果消息 * @return CommandResult */ public static CommandResult execCmd(String command, boolean isRoot, boolean isNeedResultMsg) { return execCmd(new String[]{command}, isRoot, isNeedResultMsg); } /** * 是否是在root下执行命令 * * @param commands 命令链表 * @param isRoot 是否需要root权限执行 * @param isNeedResultMsg 是否需要结果消息 * @return CommandResult */ public static CommandResult execCmd(List<String> commands, boolean isRoot, boolean isNeedResultMsg) { return execCmd(commands == null ? null : commands.toArray(new String[]{}), isRoot, isNeedResultMsg); } /** * 是否是在root下执行命令 * * @param commands 命令数组 * @param isRoot 是否需要root权限执行 * @param isNeedResultMsg 是否需要结果消息 * @return CommandResult */ public static CommandResult execCmd(String[] commands, boolean isRoot, boolean isNeedResultMsg) { int result = -1; if (commands == null || commands.length == 0) { return new CommandResult(result, null, null); } Process process = null; BufferedReader successResult = null; BufferedReader errorResult = null; StringBuilder successMsg = null; StringBuilder errorMsg = null; DataOutputStream os = null; try { process = Runtime.getRuntime().exec(isRoot ? "su" : "sh"); os = new DataOutputStream(process.getOutputStream()); for (String command : commands) { if (command == null) continue; os.write(command.getBytes()); os.writeBytes("\n"); os.flush(); } os.writeBytes("exit\n"); os.flush(); result = process.waitFor(); if (isNeedResultMsg) { successMsg = new StringBuilder(); errorMsg = new StringBuilder(); successResult = new BufferedReader(new InputStreamReader(process.getInputStream(), "UTF-8")); errorResult = new BufferedReader(new InputStreamReader(process.getErrorStream(), "UTF-8")); String s; while ((s = successResult.readLine()) != null) { successMsg.append(s); } while ((s = errorResult.readLine()) != null) { errorMsg.append(s); } } } catch (Exception e) { e.printStackTrace(); } finally { CloseUtils.closeIO(os, successResult, errorResult); if (process != null) { process.destroy(); } } return new CommandResult( result, successMsg == null ? null : successMsg.toString(), errorMsg == null ? null : errorMsg.toString() ); } /** * 返回的命令结果 */ public static class CommandResult { /** * 结果码 **/ public int result; /** * 成功信息 **/ public String successMsg; /** * 错误信息 **/ public String errorMsg; public CommandResult(int result, String successMsg, String errorMsg) { this.result = result; this.successMsg = successMsg; this.errorMsg = errorMsg; } } }
试试其它关键字
Shell相关
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
明华
贡献的其它代码
(
21
)
.
在每周日凌晨零点零分定期备份/user/backup到/tmp目录
.
table给tbody设置滚动条
.
判断两个字符串是否存在相同的内容
.
屏幕中间的弹框列表
.
关于定时器动画效果
.
Shell相关
.
日志相关
.
拼接JSON字符串
.
纯servlet实现文件上传和下载文件
.
获取签名公钥 和 公钥私钥加解密
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3