`
liyan4770
  • 浏览: 15274 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

TelnetClient远程访问unix系统

阅读更多
import java.io.InputStream;
import java.io.PrintStream;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.apache.commons.net.telnet.TelnetClient;


public class TelnetUtil {


    private TelnetClient telnet = new TelnetClient();

    private InputStream in;

    private PrintStream out;

    private static final String DEFAULT_AIX_PROMPT = "#";


    /**
     * telnet 端口
     */
    private String port;

    /**
     * 用户名
     */
    private String user;

    /**
     * 密码
     */
    private String password;

    /**
     * IP 地址
     */
    private String ip;

    /**
     * 缺省端口
     */
    private static final int DEFAULT_TELNET_PORT = 23;

    public TelnetUtil(String ip, String user, String password) {
        this.ip = ip;
        this.port = String.valueOf(TelnetUtil.DEFAULT_TELNET_PORT);
        this.user = user;
        this.password = password;
    }

    public TelnetUtil(String ip, String port, String user, String password) {
        this.ip = ip;
        this.port = port;
        this.user = user;
        this.password = password;
    }

    /**
     * @return boolean 连接成功返回true,否则返回false
     */
    private boolean connect() {

        boolean isConnect = true;

        try {
            telnet.connect(ip, Integer.parseInt(port));

            in = telnet.getInputStream();
            out = new PrintStream(telnet.getOutputStream());

            /** Log the user on* */
            readUntil("login: ");
            write(user);

            readUntil("Password: ");
            write(password);

            /** Advance to a prompt */
            readUntil(DEFAULT_AIX_PROMPT);

        } catch (Exception e) {
            isConnect = false;
            e.printStackTrace();
            return isConnect;
        }
        return isConnect;
    }

    public void su(String user, String password) {
        try {
            write("su" + " - " + user);
            readUntil("Password:");
            write(password);
            readUntil(DEFAULT_AIX_PROMPT);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public String readUntil(String pattern) {
        try {
            char lastChar = pattern.charAt(pattern.length() - 1);
            StringBuffer sb = new StringBuffer();
            char ch = (char) in.read();
            while (true) {
                System.out.print(ch);// ---需要注释掉
                sb.append(ch);
                if (ch == lastChar) {
                    if (sb.toString().endsWith(pattern)) {
                        return sb.toString();
                    }
                }
                ch = (char) in.read();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public void write(String value) {
        try {
            out.println(value);
            out.flush();
            System.out.println(value);// ---需要注释掉
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public String sendCommand(String command) {
        try {
            write(command);
            return readUntil(DEFAULT_AIX_PROMPT);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }


    private void disconnect() {
        try {
            telnet.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private String getNowDate() {
        this.connect();
        String nowDate = this.sendCommand("date|awk '{print $2,$3,$4}'");
        String[] temp = nowDate.split("\r\n");
        // 去除命令字符串
        if (temp.length > 1) {
            nowDate = temp[0];
        } else {
            nowDate = "";
        }
        this.disconnect();
        return nowDate;
    }

    public static void main(String[] args) {
        try {
            TelnetUtil telnet = new TelnetUtil("ip", "username", "password");
//            String ls = telnet.sendCommand("ls");
            String nowDate = telnet.getNowDate();
            telnet.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

分享到:
评论

相关推荐

    PuTTY:a free SSH and Telnet client。

    PuTTY以其轻量级、易用性和跨平台性而著名,是许多系统管理员和开发者首选的远程访问工具。 1. **PuTTY的特性与功能** - **安全性**:PuTTY通过SSH协议提供加密的网络通信,确保数据传输的安全性,防止被窃听或...

    putty-telnet&rlogin client

    RLogin(Remote Login)是另一种远程访问协议,最初在Unix系统间使用。尽管RLogin并不提供SSH那样的加密保护,PuTTY仍然支持它,以满足那些需要与使用此协议的系统交互的用户。 PuTTY.exe是PuTTY的主要执行文件,...

    多窗口远程管理桌面程序

    SSH常用于安全地控制Linux或Unix系统,telnet虽然不安全但仍然在某些场景下使用,FTP用于文件传输,而RDP是Windows系统内置的远程桌面连接方式。 从标签“window”来看,这个程序可能特别关注与Windows操作系统的...

    远程网络访问安全技术.pptx

    基于终端的远程访问 TELNET rlogin X-Windows 远程网络访问安全技术全文共27页,当前为第2页。 Telnet:连接异种客户端和服务器 23号端口 一个字符一个数据包 服务器验证用户 命令行 远程网络访问安全技术全文共27...

    Tectia client

    2. **多平台支持**:Tectia客户端不仅适用于Windows系统,还支持各种Unix/Linux操作系统,提供跨平台的远程访问解决方案。 3. **自动密钥管理**:Tectia客户端包含一个全面的密钥管理系统,可以自动管理用户和...

    MobaXTerm v6.1

    MobaXTerm v6.1是一款强大的远程终端工具,集成了多种功能,包括XServer和Client,为IT专业人士提供了便捷的Linux和Unix系统访问解决方案。该版本的发布,无疑为Windows用户提供了更加全面的跨平台操作体验。 首先...

    putty用于远程登录的软件

    这款软件支持多种操作系统,包括Windows、Linux和Unix平台,为IT管理员和开发人员提供了便捷的远程访问工具。 PuTTY的核心特性包括: 1. **安全性**:PuTTY基于SSH协议,提供加密的数据传输,确保用户与远程服务器...

    windows下的NFS服务(SFU)配置

    Windows下的NFS服务(SFU)配置是指在Windows操作系统中安装和配置NFS(Network File System)服务,以便实现与Linux和UNIX系统的文件共享。SFU(Services for UNIX)是微软提供的一个功能强大的UNIX实用程序包,...

    crt 工具下载

    CRT,全称是“Cygwin Telnet Client”,是由Cygwin项目开发的一款远程终端模拟器,主要用于在Windows操作系统上连接并管理Linux或Unix服务器。它提供了强大的远程控制功能,让用户能够在Windows环境下像操作本地系统...

    SSH Secure Shell Client

    SSH Secure Shell Client是一款广泛使用的网络安全协议客户端,专为远程连接Linux、Unix以及Solaris操作系统而设计。它提供了安全的数据传输和交互,确保用户能够通过不安全的网络进行加密的会话,例如进行命令行...

    连接Linux系统的CRT工具.zip

    1. **SecureCRT**:SecureCRT是一款流行的Windows平台上用于连接远程Linux或UNIX系统的终端仿真器,它支持SSH、Telnet、Rlogin等多种协议。它提供了强大的功能,如多窗口同时连接多个会话、自动登录、会话管理、脚本...

    CIW-操作系统安全3带答案.pdf

    7. **UNIX网络程序**:在UNIX系统下,网络应用程序通常被称为守护进程(Daemons),选项C正确。 8. **Windows 2000组策略刷新**:要使Windows 2000的组策略立即生效,应使用`Gpedit.msc`命令,选项B正确。 9. **...

    各种远程工具集合.rar

    在IT行业中,远程工具是必不可少的,特别是在网络管理员、开发者以及需要远程访问服务器的用户群体中。本资源包集合了多种流行的远程连接工具,包括Putty、SecureCRT、SSH Secure Shell Client等,方便用户根据需求...

    ssh window client

    这样的客户端允许用户通过加密的连接管理远程Linux或Unix服务器,确保通信的安全性,防止数据被窃取或篡改。 标签"ssh window client"进一步明确了讨论的主题,即关于在Windows上使用的SSH客户端程序。 在压缩包子...

    putty.exe 远程文件传输工具

    PuTTY,全称为PuTTY SSH和Telnet客户端...总的来说,PuTTY作为一款强大的远程访问工具,虽然不直接包含文件传输功能,但通过其配套工具或与其他软件结合,可以在保障安全性的前提下,方便地实现远程文件的管理和传输。

    SSH和putty和winscp

    它允许用户通过加密连接访问远程Linux或Unix系统,确保数据传输的安全性。此客户端提供了丰富的功能,如终端仿真、文件传输、公共密钥认证等,使得远程管理更为便捷。 2. Putty:Putty 是一个免费且开源的SSH客户端...

    putty-64bit-0.73-installer.zip

    3. **rlogin**:PuTTY还提供了对rlogin协议的支持,这是一种较老的远程登录方式,主要用于Unix系统之间。但因其缺乏安全特性,现已被SSH所取代。 4. **TCP隧道与端口转发**:PuTTY允许创建TCP隧道,可以将本地端口...

    MAC中类似CRT的工具

    在Mac操作系统中,寻找一款类似于Windows下的CRT(Client for Remote Telnet/SSH)工具是非常常见的需求,因为这类软件能够提供安全的远程访问功能。本文将详细介绍MAC中的ZOC,一个强大的终端模拟器和SSH客户端,它...

    puttyclient

    总的来说,Puttyclient是一款功能强大且可靠的远程访问工具,尤其适合需要处理多语言环境和需要高效率文本编辑的IT专业人员。它的出现解决了SSH客户端乱码的问题,提升了远程操作的体验,是IT工作中的得力助手。

    SSH Secure File Transfer Client+putty

    总的来说,SSH Secure File Transfer Client和Putty是强大且实用的工具,它们为开发者和系统管理员提供了安全、便捷的远程访问和文件传输手段。在Windows环境下,Putty的易用性和灵活性使其成为SSH连接的首选客户端...

Global site tag (gtag.js) - Google Analytics