/**
* 执行命令fdisk -l 获得host上所有磁盘信息
*
* @author wj_j2ee
* @date 2012.11.6
* @param cmd
* @return rsInfo
* @throws IOException
*/
public static ArrayList<String> getAllHostDisks(String cmd) throws IOException {
Runtime runtime = Runtime.getRuntime();
Process p = runtime.exec(cmd);
BufferedReader resultBR = new BufferedReader(new InputStreamReader(p.getInputStream()));
ArrayList<String> rsInfo = new ArrayList<String>();
StringBuffer buffer = new StringBuffer();
String partitionIden = null;
while (true) {
String line = resultBR.readLine();
if (line == null) {
break;
} else {
String source = null;
String size = null;
String identifier = null;
if (line.indexOf("Disk ") != -1 && line.indexOf("bytes") != -1) {
source = line.substring(line.indexOf("/"), line.indexOf(":") + 1);
String sSize = line.substring(line.indexOf(",") + 2, line.indexOf(" bytes"));
size = new DecimalFormat("#0").format(Double.valueOf(sSize) / 1000 / 1000 / 1000);
} else if (line.indexOf("identifier") != -1) {
identifier = line.substring(line.lastIndexOf(" ") + 1);
} else if (line.indexOf("/") == 0 && line.indexOf("swap") == -1
&& line.indexOf("Extended") == -1) {
List<String> partition = new ArrayList<String>();
String[] str = line.split("\\s");
for (int i = 0; i < str.length; i++) {
if (str[i].length() > 0) {
int number = str[i].indexOf("+");
if (number != -1) {
str[i] = str[i].substring(0, number);
}
partition.add(str[i]);
}
}
buffer.append(partition.get(0));
buffer.append(":");
if ("*".equals(partition.get(1))) {
size = new DecimalFormat("#0").format(Double.valueOf(partition.get(4)) / 1000 / 1000);
} else {
size = new DecimalFormat("#0").format(Double.valueOf(partition.get(3)) / 1000 / 1000);
}
if (size == null || size.length() < 1) {
buffer.append(0);
} else {
buffer.append(size);
}
buffer.append(" G:");
if ("*".equals(partition.get(1))) {
buffer.append(partitionIden).append("_").append(partition.get(3));
} else {
buffer.append(partitionIden).append("_").append(partition.get(2));
}
rsInfo.add(buffer.toString());
buffer = new StringBuffer();
}
if (source != null) {
buffer.append(source);
buffer.append(size);
buffer.append(" G:");
partitionIden = null;
}
if (identifier != null) {
partitionIden = identifier;
buffer.append(identifier);
rsInfo.add(buffer.toString());
buffer = new StringBuffer();
}
}
}
if (p != null) {
p.destroy();
}
if (resultBR != null) {
try {
resultBR.close();
} catch (Exception e) {
}
}
return rsInfo;
}