/**
* commons-net-2.0.jar是工程依赖包
*/
package telnet2;
import java.io.InputStream;
import java.io.PrintStream;
import org.apache.commons.net.telnet.TelnetClient;
/**
* @descript NetTelenet.java
* @author sinclair
* @date Jun 10, 2010
*/
public class NetTelnet {
private TelnetClient telnet = new TelnetClient();
private InputStream in;
private PrintStream out;
private char prompt = '$';// 普通用户结束
public NetTelnet( String ip, int port, String user, String password ) {
try {
telnet.connect( ip, port );
in = telnet.getInputStream();
out = new PrintStream( telnet.getOutputStream() );
// 根据root用户设置结束符
this.prompt = user.equals( "root" ) ? '#' : '$';
login( user, password );
} catch ( Exception e ) {
e.printStackTrace();
}
}
/**
* 登录
*
* @param user
* @param password
*/
public void login( String user, String password ) {
readUntil( "login:" );
write( user );
readUntil( "Password:" );
write( password );
readUntil( prompt + " " );
}
/**
* 读取分析结果
*
* @param pattern
* @return
*/
public String readUntil( String pattern ) {
try {
char lastChar = pattern.charAt( pattern.length() - 1 );
StringBuffer sb = new StringBuffer();
char ch = ( char ) in.read();
while ( true ) {
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;
}
/**
* 写操作
*
* @param value
*/
public void write( String value ) {
try {
out.println( value );
out.flush();
} catch ( Exception e ) {
e.printStackTrace();
}
}
/**
* 向目标发送命令字符串
*
* @param command
* @return
*/
public String sendCommand( String command ) {
try {
write( command );
return readUntil( prompt + " " );
} catch ( Exception e ) {
e.printStackTrace();
}
return null;
}
/**
* 关闭连接
*/
public void disconnect() {
try {
telnet.disconnect();
} catch ( Exception e ) {
e.printStackTrace();
}
}
public static void main( String[] args ) {
try {
System.out.println( "启动Telnet..." );
String ip = "192.168.0.11";
int port = 23;
String user = "user";
String password = "111111";
NetTelnet telnet = new NetTelnet( ip, port, user, password );
telnet.sendCommand( "export LANG=en" );
String r1 = telnet.sendCommand( "cd /home/project/" );
String r2 = telnet.sendCommand( "pwd" );
String r3 = telnet.sendCommand( "sh a.sh" );
System.out.println( "显示结果" );
System.out.println( r1 );
System.out.println( r2 );
System.out.println( r3 );
telnet.disconnect();
} catch ( Exception e ) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
而 Telnet 是一种较老的协议,它允许用户通过网络在远程主机上执行命令,但通常不推荐使用,因为它传输的数据是明文的,不安全。 要实现 SSH 登陆,Java 社区提供了一些库,如 JSch (Java Secure Channel)。JSch 是...
Java语言实现的Telnet客户端程序是一种能够连接到远程服务器并执行命令或进行交互的工具。在本资源中,开发者提供了一个具有图形用户界面(GUI)的实现,使得用户可以通过直观的界面来操作 Telnet 客户端,而不再...
Shell脚本则是用Shell语言编写的程序,通过一系列预定义的命令和逻辑结构来完成特定的任务。Shell脚本可以实现自动化运维、批量处理文件等任务,是系统管理员和开发人员必备的一项技能。 #### 二、Shell脚本基本...
通过编写脚本,用户可以自动化执行一系列重复性的命令,比如批量重启远程服务或者进行系统维护检查。此外,它支持公共密钥认证,增强了安全性,免去了每次连接都需要输入密码的麻烦。 在安全性方面,SecureCRT遵循...
Java Telnet客户端实例源码 一个目标文件,演示Socket的使用。 Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 ...
2. **脚本编写**:编写shell脚本,可以实现批处理任务,如循环、条件判断、函数等。 3. **环境变量**:如PATH、HOME等,用于指定程序路径和用户目录。 4. **正则表达式**:用于文本匹配和查找,如grep、sed、awk等...
Unix Shell是Unix系统中的命令解释器,当用户登录到Sun工作站并启动终端窗口或通过Telnet、Putty等终端模拟器远程登录到多用户Sun Unix系统时,会与Shell进行交互。默认情况下,计算机科学系的用户使用的登录Shell是...
1. **Telnet协议**:这是一种远程访问协议,允许用户通过网络连接到另一台设备(如中兴ONU)并执行命令,仿佛在本地操作一样。它基于TCP/IP协议栈,使用端口23进行通信。 2. **中兴ONU**:中兴光网络单元是电信网络...
- **命令执行**:用户可以通过 Shell 输入各种命令,Shell 将这些命令解析并传递给内核执行。 - **环境变量和脚本编写**:Shell 还支持环境变量的设置和脚本语言的编写,使得自动化任务处理变得更加简单高效。 ####...
3. **利用echo命令写脚本**:通过dos重定向给tlntadmn.exe执行,要求有足够的shell权限或后门。 4. **使用WSH脚本远程开启telnet并修改认证方式**:需具备Admin账户密码和WMI服务开放。 5. **使用服务器端admin的...
使用此脚本,您无需离开命令行即可轻松生成各种类型的反向Shell。 当您像挑战一样玩时,此脚本会派上用场。 可用的外壳类型 重击 Perl Ruby 高朗 网猫 恩卡特 电源外壳 Awk a Java 索卡特 Nodejs 远程登录 ...
该工具支持多种协议,包括SSH(Secure Shell)、Telnet、Rlogin和Serial,使用户能够安全地访问和管理基于Unix、Linux和Windows系统的设备。"CISCO模拟器"的提及暗示了SecureCRT在网络工程领域中的应用,与Cisco...
SecureCRT是一款强大的终端仿真程序,它支持多种协议,包括SSH(Secure Shell)、Telnet、Rlogin和Serial。这款工具提供了丰富的功能,如颜色配置、宏支持、会话管理以及多窗口同时连接等,使得用户可以更高效地管理...
通过SSH连接到远程服务器后,可以直接在Xshell中执行Java编译、运行、调试等命令,查看日志,甚至配合SFTP进行文件的上传和下载。这对于远程开发和部署Java应用尤其有用。 在字体和颜色配置上,Xshell6允许用户...
作为一款网络工具,CRT网络交换机调试软件的核心功能是通过串行端口或者网络连接(如SSH、Telnet)来远程控制和管理网络设备。它支持多种通信协议,如SSH(Secure Shell)用于加密网络通信,以及传统的Telnet协议,...
通过SSH连接,开发者可以直接在Xshell5中执行Java命令,如`javac`进行编译,`java`运行程序,以及`jdb`进行调试。 对于CentOS这样的Linux发行版,Xshell5是管理员的理想选择。它可以方便地进行命令行操作,比如安装...
在项目中引入JSch库,开发者可以方便地在Java程序中实现与SSH服务器的交互,例如执行远程脚本、部署应用或者进行自动化运维操作。 JSch库的核心类包括`JSch`、`Session`、`Channel`等。`JSch`类是整个库的入口点,...
通过PuTTY,用户可以使用命令行界面(CLI)与远程Linux系统交互,执行各种管理任务,如系统维护、文件管理、脚本执行等。 PuTTY不仅限于简单的命令行访问,它还支持多种功能,例如: 1. **会话管理**:用户可以...
在IT行业中,有时候我们需要将Java程序打包成Windows操作系统下的可执行文件(.exe),以便非开发人员能够方便地运行。这时,"exe4j"工具就派上了用场。exe4j是一个强大的Java应用程序打包工具,它允许开发者将Java...
这份详细笔记不仅涵盖了Oracle数据库的基本操作,还深入探讨了Shell脚本编辑、SQLPlus命令行工具的使用,以及Oracle数据库管理的重要概念。以下是根据这些信息整理的知识点: ### Oracle数据库入门与操作 #### 1. ...