java 调用linux
通过java实现linux方法调用
一、引入依赖
<dependency>
<groupId>ch.ethz.ganymed</groupId>
<artifactId>ganymed-ssh2</artifactId>
<version>262</version>
</dependency>
二、方法使用
1.工具类
代码如下:
public class SshUtil
{
private static String DEFAULTCHART = "UTF-8";
public static Connection conn = null;
public static Session session = null;
public static SCPClient client = null;
public static boolean connectLinux(String host, int port, String user, String password) {
try {
conn = getConn(host, user, password, port);
if (conn == null)
{
return false;
}
session = conn.openSession();
client = conn.createSCPClient();
} catch (IOException e) {
e.printStackTrace();
}
return true;
}
public static String exeCommand(String command) {
String result = "";
try {
System.out.println(command);
session.execCommand(command);
result = processStdout(session.getStdout(), DEFAULTCHART);
} catch (IOException e) {
e.printStackTrace();
return "";
}
return result;
}
private static Connection getConn(String ip, String userName, String pwd, int port) {
boolean blag = false;
try {
conn = new Connection(ip, port);
conn.connect();
boolean isAuthenticated = conn.authenticateWithPassword(userName, pwd);
if (isAuthenticated) {
blag = true;
System.out.println("linux认证成功");
}
if (!isAuthenticated) {
System.out.println("linux认证失败");
throw new IOException("Authentication failed");
}
} catch (IOException e) {
e.printStackTrace();
}
if (blag) {
return conn;
}
return null;
}
public static String processStdout(InputStream in, String charset) {
StreamGobbler streamGobbler = new StreamGobbler(in);
StringBuffer buffer = new StringBuffer();
try {
BufferedReader br = new BufferedReader(new InputStreamReader(streamGobbler, charset));
String line = null;
while ((line = br.readLine()) != null) {
buffer.append(String.valueOf(line) + "\n");
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return buffer.toString();
}
}
2.方法调用
代码如下:
public class sshtest {
public static void main(String[] args) {
SshMonitorClass.connectLinux("192.168.3.161",22,"root","root");
String strResult = SshMonitorClass.exeCommand("ls");
System.out.println(strResult);
}
}
返回查询到的数据。