介绍
这篇文章介绍了使用java代码远程控制服务器服务器,用到了ssh协议。话不多说,直接上代码,兄弟mer!!!
引用依赖
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version> <!-- 版本号可能需要根据最新版本进行更新 -->
</dependency>
实现代码
public Result<?> resultDevice(@RequestParam(name="ip") String ip) {
String host = ip; //服务器ip
String username = "root"; //服务器登录账号
String password = "password"; //服务器登录密码
int port = 22; // 默认SSH端口
try {
// 创建JSch对象
JSch jsch = new JSch();
// 创建SSH会话
Session session = jsch.getSession(username, host, port);
session.setPassword(password);
// 设置StrictHostKeyChecking属性为no,避免HostKey检查
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
// 连接到服务器
session.connect();
// 创建SSH通道
Channel channel = session.openChannel("exec");
// 设置执行的命令
String command = "sudo /sbin/reboot"; // 请注意,这里使用了sudo来执行重启命令
// String command = "sudo mkdir /ceshi"; // 请注意,这里使用了sudo来创建文件夹
((ChannelExec) channel).setCommand(command);
// 获取输入流和输出流
channel.setInputStream(null);
((ChannelExec) channel).setErrStream(System.err);
// 连接通道并等待执行完成
channel.connect();
channel.disconnect();
// 断开SSH会话
session.disconnect();
System.out.println("Server reboot command executed successfully.");
} catch (JSchException e) {
e.printStackTrace();
}
return Result.OK();
}
注意事项
- 请将"your_server_ip"、"your_username"和"your_password"替换为实际的服务器IP、用户名和密码。
- 代码中使用了
sudo /sbin/reboot
来执行重启命令,这可能需要您的用户具有执行sudo的权限。确保您的用户配置了免密码执行sudo,或者根据您的实际情况修改执行的命令。 - 使用
StrictHostKeyChecking
设置为"no"会跳过对主机密钥的检查,这在测试时可能是方便的,但在生产环境中请小心使用。
到此结束!!!仅供参考!!!亲测有效!!!期待兄弟mer的点赞和关注!!!