写一个自己的XShell
你想做一个不一样的web项目么?比如用Java连接云服务器,写一个自己的XShell
Java使用JSch连接服务器实现命令交互
一 引入maven
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>
二、编写代码
(1)创建MyUserInfo
创建MyUserInfo类,实现Jsch包下的 UserInfo接口(必须)UIKeyboardInteractive接口(可选)。将public boolean promptYesNo(String s)方法的返回值更改为true。
public class MyUserInfo implements UserInfo, UIKeyboardInteractive {
@Override
public String getPassphrase() {
return null;
}
@Override
public String getPassword() {
return null;
}
@Override
public boolean promptPassword(String s) {
return false;
}
@Override
public boolean promptPassphrase(String s) {
return false;
}
@Override
public boolean promptYesNo(String s) {
//TOOD 这里
//return false;
return true;
}
@Override
public void showMessage(String s) {
}
@Override
public String[] promptKeyboardInteractive(String s, String s1, String s2, String[] strings, boolean[] booleans) {
return null;
}
}
(2)创建shell类连接服务器
public class Shell {
/**
*
* @param host 服务器ip地址
* @param username 用户名
* @param password 密码
* @param port 端口
*/
public void show(String host,String username,String password,int port){
try {
//1、创建JSch对象
JSch jSch = new JSch();
//2、设置连接服务器参数
//用户名、主机ip、端口 获取session
Session session = jSch.getSession(username, host, port);
//设置密码
session.setPassword(password);
//设置用户信息(必须)
session.setUserInfo(new MyUserInfo());
//设置session连接超时时间
session.connect(30000);
//3、设置操作服务器的方式
//采用shell方式(即命令交互)
Channel channel = session.openChannel("shell");
//命令从控制台输入
channel.setInputStream(System.in);
//显示信息从控制台输出
channel.setOutputStream(System.out);
//设置命令执行超时时间
channel.connect(3*1000);
} catch (JSchException e) {
e.printStackTrace();
}
}
}
(3)启动
public class AppMain {
public static void main(String[] args) throws InterruptedException {
String username="root";//用户名
String host="100.100.100.100";//ip地址
int port=22;//端口 22端口,即为ssh应用端口,远程连接端口
String password="123456789";//密码
Shell shell = new Shell();
shell.show(host,username,password,port);
}
}
三、结果
参考:
;
shell.show(host,username,password,port);
}
}
## 三、结果
[外链图片转存中...(img-T8NeqzNP-1690376487606)]
# 参考:
[java使用JSch连接服务器实现命令交互-阿里云开发者社区 (aliyun.com)](https://developer.aliyun.com/article/1167855#:~:text=java使用JSch连接服务器实现命令交互 1 1、通过maven引入jsch,2 2、代码编写 3 3、测试结果)