Java PuTTY 打开保存的会话

Java PuTTY open saved session

Plink 新手,我正在尝试使用 Plink 从 putty 加载保存的会话,我的会话称为 "saved session1",当我加载和 运行 会话并远程连接到 PuTTY 中的服务器 我首先被要求输入 "login as:",然后输入 "Password:"。鉴于我的 "saved session1" 用户名 "username1" 和密码 "password1".我的代码基于之前的 Whosebug post

Java and putty - send commands [duplicate]

我有代码,但不确定如何格式化命令,假设 PuTTY 和 Plink 与我的 java 代码位于同一目录中,并提供有关服务器的所有信息、我的会话和登录详细信息,如何使用 r.exe(); 命令简单地登录到服务器并打印主目录内容?

import java.io.*;
import java.net.*;

public class javaputty{
    public static void main(String[] args){

        InputStream std; 
        OutputStream out; 
        InputStream err; 

        try {
            String command = "plink -load saved session1";
            String username = "username1";
            String password = "password1";

            Runtime r = Runtime.getRuntime ();
            Process p = r.exec (command);

            std = p.getInputStream ();
            out = p.getOutputStream ();
            err = p.getErrorStream ();

            out.write ("ls -l\n".getBytes ());
            out.flush ();

            Thread.sleep (10000);

            int value = 0;
            if (std.available () > 0) {
                System.out.println ("STD:");
                value = std.read ();
                System.out.print ((char) value);

                while (std.available () > 0) {
                    value = std.read ();
                    System.out.print ((char) value);
                }
            }

            if (err.available () > 0) {
                System.out.println ("ERR:");
                value = err.read ();
                System.out.print ((char) value);

                while (err.available () > 0) {
                    value = err.read ();
                    System.out.print ((char) value);
                }
            }

            p.destroy ();
        }
        catch (Exception e) {
            e.printStackTrace ();
        }
    }
}

如果您存储的会话名称包含 space,您必须将名称用双引号引起来(最好始终这样做):

String command = "plink -load \"saved session1\"";

尽管您最好使用本机 Java SSH 库(例如 JSch),而不是尝试自动化 PuTTY/Plink.

参见Sending commands to remote server through ssh by Java with JSch