一前言
最近有个文件交换平台功能,需要使用到java连接服务器执行命令。
二复习Linux命令
#添加用户
useradd -d /home/test -m fgb
#-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
创建fgb用户 指定主目录为/home/test
#修改用户密码
echo password | passwd --stdin username
示例:把root用户的密码修改成123456
echo "123456" | passwd --stdin root
#删除用户
userdel -r username
示例:把fgb用户删除
userdel -r fgb
#给用户赋予某个文件夹权限
chown 700 fgb /usr/local/test
给fgb用户赋予/usr/local/test目录700权限
三代码部分
首先pom文件导入依赖
<dependency>
<groupId>ch.ethz.ganymed</groupId>
<artifactId>ganymed-ssh2</artifactId>
<version>262</version>
</dependency>
#工具类
package com.eshore.framework.util;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
import ch.ethz.ssh2.log.Logger;
/**
* shell脚本调用类
* @author clear
*
*/
public class SshBasic{
//连接,登陆
public Connection login(String hostname,int port,String username,String password){
//获取连接
Connection conn = new Connection(hostname, port);
try {
//连接
conn.connect();
//输入账号密码登陆
boolean isAuthenticated = conn.authenticateWithPassword(username, password);
//登陆失败,返回错误
if(isAuthenticated == false){
throw new IOException("isAuthentication failed.");
}
} catch (IOException e) {
e.printStackTrace();
}
return conn;
}
//获取Session
public Session getSession(Connection conn){
Session sess = null;
try {
sess = conn.openSession();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return sess;
}
}
#代码调用
public static void main(String[] args) {
SshBasic m = new SshBasic();
//连接并登陆
Connection conn = m.login("132.122.1.51", 22, "srglweb", "srglweb123");
//获取Session
Session sess = m.getSession(conn);
//执行命令 下面命令是删除用户fgb
try{
sess.execCommand("userdel -r fgb")
}catch(IOException e){
e.printStackTrace();
}
//判断会话是否成功
int result = sess.getExitStatus();//如果成功返回0
System.out.println("result:"+result);
//释放资源
sess.close();
conn.close();
}
}