java语言,sftp连接远程服务器,在已知路径创建一个sh文件,文件名为当前时间字符串
时间: 2024-06-09 11:11:40 浏览: 117
sftp和ftp 根据配置远程服务器地址下载文件到当前服务
可以使用JSch库来实现Java语言连接SFTP服务的功能,下面是一个简单的示例代码,用于在已知路径创建一个以当前时间字符串命名的sh文件:
```java
import com.jcraft.jsch.*;
import java.io.*;
public class SftpExample {
public static void main(String[] args) {
String host = "your_host";
int port = 22;
String username = "your_username";
String password = "your_password";
String remotePath = "your_remote_path";
String fileName = getCurrentTimeString() + ".sh";
JSch jsch = new JSch();
Session session = null;
ChannelSftp channelSftp = null;
try {
session = jsch.getSession(username, host, port);
session.setConfig("StrictHostKeyChecking", "no");
session.setPassword(password);
session.connect();
channelSftp = (ChannelSftp) session.openChannel("sftp");
channelSftp.connect();
channelSftp.cd(remotePath);
channelSftp.put(new ByteArrayInputStream("#!/bin/bash".getBytes()), fileName);
System.out.println("File created successfully!");
} catch (JSchException | SftpException | IOException e) {
e.printStackTrace();
} finally {
if (channelSftp != null) {
channelSftp.disconnect();
}
if (session != null) {
session.disconnect();
}
}
}
private static String getCurrentTimeString() {
return String.valueOf(System.currentTimeMillis() / 1000L);
}
}
```
在上述示例代码中,我们首先定义了连接SFTP服务所需的相关参数,包括服务器地址、端口号、用户名、密码、远程路径等等。然后使用JSch库创建一个SFTP连接,并在远程路径中创建一个以当前时间字符串命名的sh文件。注意,在这个示例中,我们使用了当前时间戳除以1000作为文件名,因此生成的文件名将是一个以秒为单位的时间戳字符串。你可以根据自己的需求修改文件名生成方式。
需要注意的是,在使用JSch库连接SFTP服务时,需要正确设置服务器的StrictHostKeyChecking配置,否则会出现连接失败的情况。在示例代码中,我们将StrictHostKeyChecking配置设置为no,这并不是一个安全的做法,如果你需要更安全的方式,可以参考JSch官方文档中的相关说明。
阅读全文