繁体   English   中英

Java Serversocket和Bash连接

[英]Java Serversocket and Bash Connection

我想知道是否有一种方法可以在java serversocket和bash tcp管道之间打开管道。 如果是这样,您将如何做。 我知道如何设置Java服务器端,但是如何通过bash甚至Windows cmd提示符打开套接字连接。 基本上我想将标准输入传递到tcp连接并从中接收标准输出。

任何例子赞赏!

-TJ

ServerSocket不能做任何事情来接受传入的连接,并创建用作端点的新Socket(不要将ServerSocket用于任何发送或接收操作)。 很好,但是请注意连接的哪一侧需要接受连接。 我认为这将是Bash,因为这似乎“拥有”了管道,因此您可以使用Socket来进行连接。

使用任何SSH工具(有很多开源,例如ganymade)参考:

http://java-source.net/open-source/network-clients/ganymed-ssh-2-for-java

我没有使用这个特定的客户端,而是其他ssh客户端来执行您想要的操作。

PS:您确实不需要ServerSocket,但是使用线程很有帮助。

Netcat通常用于从Unix Shell打开TCP连接。 Bash(或我知道的任何其他Shell)不直接支持它。 似乎也存在Netcat的Windows端口,但是我没有使用过。

但是,最好只使用SSH,因为在这种情况下,无需在Java端进行特殊设置-您只需将标准I / O流自动重定向到SSH客户端即可,并具有免费加密和可选压缩功能( ssh -C)作为奖金。 缺点是需要在Java端安装SSH服务器,在连接端安装SSH客户端。

这是一个示例-导入中定义了Connection,Session等类。 在我们使用trilead SSH时,我认为它不再公开可用,但是您可以在网络上找到很多其他库,例如, http : //linuxmafia.com/ssh/java.html

关键是,我们不必打开服务器插槽即可(1)建立SSH会话,(2)进行密码身份验证,(3)在用户的登录shell上运行某些命令,以及(4)抓取其stdout。 我相信大多数SSH库都会为您提供此功能。 希望能有所帮助,-MS

public void runCommand (String uName, String pWord, String cmd) throws Exception {

    Connection conn = new Connection ("localhost");
    conn.connect();
    boolean authenticated = conn.authenticateWithPassword (uName, pWord);

    if (!authenticated)
        throw new Exception ("Authentication failure");
    Session sess = connection.openSession();
    sess.execCommand (cmd);

    BufferedReader br = new BufferedReader (new InputStreamReader (
                new StreamGobbler (sess.getStdout())));

    for (String s = br.readLine() ; s != null ; s = br.readLine()) {
          // do stuff with s
    }
    br.close();
    sess.close();
    conn.close();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM