项目场景:
在项目中我们需要调用linux语句给企业微信发邮件
问题描述
在服务器上调用命令却能发送成功,但是使用Runtime.getRuntime().exec()却一直发送不成功
@Override
public static String send(String message) throws IOException {
String filePath = "ebody.txt";
File file = new File(filePath);
if(!file.exists()){
file.createNewFile();
}
FileOutputStream outputStream = new FileOutputStream(file);
outputStream.write(message.getBytes("UTF-8"));
outputStream.close();
String command = "linux语句";
Process ps = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream()));
StringBuffer sb = new StringBuffer();
String line;
while ((line = br.readLine()) != null) {
sb.append(line).append("\n");
}
return sb.toString();
}
原因分析:
刚刚开始以为是command错误,因为command的中含有特殊字符并且多条需要使用数组,后面尝试了一下还是不行
解决方案:
后面查阅资料发现RunTime.getRuntime().exec()是实现了调用服务器命令脚本来执行功能需要
新建一个脚本,将linux命令放入脚本中,在调用