java用密钥的方式往远程服务器上的两台虚拟机上创建文件并随即写入字符串内容,并计算MD5并保留下来MD5值

要使用Java通过SSH密钥连接到远程服务器上的两台虚拟机,创建文件、写入内容、计算MD5,并保存MD5值,你可以使用Java SSH库,比如JSch。下面是一个示例代码,演示了如何执行这些操作:

首先,你需要添加 JSch 库的依赖。可以使用 Maven 或 Gradle 来引入 JSch。

Maven 依赖:

<dependency>
    <groupId>com.jcraft</groupId>
    <artifactId>jsch</artifactId>
    <version>0.1.55</version> <!-- 请使用最新的版本 -->
</dependency>

Gradle 依赖:

implementation group: 'com.jcraft', name: 'jsch', version: '0.1.55' // 请使用最新的版本

接下来,可以使用以下 Java 代码来实现你的需求:

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;

public class SSHFileOperation {
    public static void main(String[] args) {
        try {
            JSch jsch = new JSch();

            // 远程虚拟机1的SSH连接信息
            String username1 = "your_username1";
            String host1 = "remote_host1";
            int port1 = 22;
            String privateKey1 = "/path/to/your/ssh_key1"; // 本地SSH私钥文件路径

            // 远程虚拟机2的SSH连接信息
            String username2 = "your_username2";
            String host2 = "remote_host2";
            int port2 = 22;
            String privateKey2 = "/path/to/your/ssh_key2"; // 本地SSH私钥文件路径

            // 创建会话
            Session session1 = createSession(jsch, username1, host1, port1, privateKey1);
            Session session2 = createSession(jsch, username2, host2, port2, privateKey2);

            // 在两台虚拟机上创建文件,写入内容,计算MD5
            createFileAndCalculateMD5(session1, "/path/to/remote/file1.txt", "Content for File 1");
            createFileAndCalculateMD5(session2, "/path/to/remote/file2.txt", "Content for File 2");

            // 关闭会话
            session1.disconnect();
            session2.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 创建SSH会话
    private static Session createSession(JSch jsch, String username, String host, int port, String privateKey) throws JSchException {
        jsch.addIdentity(privateKey);
        Session session = jsch.getSession(username, host, port);
        session.setConfig("StrictHostKeyChecking", "no"); // 忽略主机密钥检查
        session.connect();
        return session;
    }

    // 在远程服务器上创建文件,写入内容,计算MD5
    private static void createFileAndCalculateMD5(Session session, String remoteFilePath, String content) throws Exception {
        Channel channel = session.openChannel("exec");
        ((ChannelExec) channel).setCommand("echo '" + content + "' > " + remoteFilePath);
        channel.setInputStream(null);
        ((ChannelExec) channel).setErrStream(System.err);

        InputStream in = channel.getInputStream();
        channel.connect();
        byte[] tmp = new byte[1024];
        while (true) {
            while (in.available() > 0) {
                int i = in.read(tmp, 0, 1024);
                if (i < 0) {
                    break;
                }
            }
            if (channel.isClosed()) {
                if (in.available() > 0) {
                    continue;
                }
                break;
            }
        }
        channel.disconnect();
    }
}

请替换示例中的 SSH 连接信息、文件路径和内容。这段代码会在两台虚拟机上创建文件、写入内容,并计算文件的 MD5 值。这是一个基本示例,你可以根据实际需求进行修改和扩展。确保替换为你自己的 SSH 密钥文件和远程虚拟机信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值