java中远程登陆主机并远程调用执行shell脚本
package place.in.javaeye;
import java.io.InputStream;
import java.io.PrintStream;
import org.apache.commons.net.telnet.TelnetClient;
public class Shell
{
private TelnetClient telnet = new TelnetClient();
private InputStream in;
private PrintStream out;
private char prompt = '$';// 普通用户结束
public Shell(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:");
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();
System.out.print(ch);
}
}
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) {
TelnetClient telnet = new TelnetClient();
try {
Shell she =new Shell("10.**.***.***", 23, "***", "***");
System.out.println(she);
System.out.println(she.sendCommand("ls"));
she.disconnect();
}catch (Exception e) {
// TODO: handle exception
}
}
}
分享到:
相关推荐
它允许程序员构建复杂的telnet应用,比如模拟终端、远程控制软件或自动化脚本。在描述中提到的"java的telnet example"可能是指包含的一些示例代码,这些代码演示了如何使用Apache Net库来创建telnet客户端或服务器。...
•支持分布式功能,CLE将对象的定义和描述同步到客户端,提供远程调用接口,可以在客户端使用对象的属性,调用对象的函数 •提供多种工具,包括:服务家在,打包,发布,调试,管理 •支持telnet客户端,可以直接...
演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程...
演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程...
演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程...
在Python脚本中,我们可以通过Telnetlib模块的Telnet类来实现这一过程。具体步骤包括创建Telnet类的对象,连接到Dubbo服务的IP地址和端口,构造符合Dubbo协议的命令字符串,并通过write方法发送命令。最后,使用read...
`Ant`是一个由Apache基金会开发的Java构建工具,它允许开发者通过XML配置文件来定义构建任务,实现了编译、测试、打包和部署等一系列自动化过程。在这个场景下,`Ant`被用来实现项目的打包和发布,大大减少了手动...
演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程...
演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程...
演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程...
在"upclearcase.rar"这个压缩包中,可能包含了实现Socket调用服务器的批处理脚本和相关配置文件。解压后,我们可以找到具体的.bat文件,通过阅读其内容了解如何与服务器进行Socket通信。可能的操作包括设置服务器的...
将ANT和OpenSSH结合,可以在Java Web系统中实现远程发布和安全文件传输。ANT可以通过定义任务(tasks)调用OpenSSH命令行工具,如scp(安全复制)或sftp(安全文件传输协议),进行文件的加密传输。这样,开发者可以...
- 支持模拟服务器,方便测试 API 调用。 - **适用场景**:适用于 API 接口的开发、测试和调试。 - **SoapUI** - **简介**:SoapUI 是一个用于 SOAP 和 REST API 测试的强大工具。 - **特点**: - 支持 SOAP、...
- 自动化脚本:结合Java和其他工具,可以编写自动化脚本来处理复杂的远程操作。 需要注意的是,使用SSH2开发时应遵循最佳实践,确保安全性,例如: - 使用强密码或密钥对进行身份验证。 - 定期更新SSH2库,以获取...
它是Java编程语言的核心组成部分之一,提供了各种类库或接口供Java开发者调用,从而实现不同的功能。例如,`java.lang` 包提供了基本的类,如`String` 和 `Math`;`java.util` 包则提供了一些实用的数据结构,如`...
Apache Commons Net库是Java开发者在进行网络编程时的重要工具,它包含了多种网络协议的实现,如FTP(文件传输协议)、Telnet(远程登录协议)、NNTP(新闻组传输协议)等。此外,还有对SMTP(简单邮件传输协议)和...
- **应用场景**:AOP编程、远程调用、事务管理等。 - **实现方式**:Java自带的`java.lang.reflect.Proxy`类。 **1.8 字符串与集合类** - **String**: - 不可变性:String对象一旦创建后不能修改其内容。 - ...
这款工具的独特之处在于它允许开发者通过任何支持Telnet协议的客户端来远程调用和执行这些命令,极大地提高了工作效率和灵活性。 在Java开发中,经常需要执行各种命令行操作,如编译代码、运行测试、打包应用等。...
4. `ant-jsch.jar`: Jsch是一个纯Java实现的SSH2库,使得Ant能够通过SSH协议进行远程操作,例如复制文件到远程服务器。 5. `ant-apache-oro.jar`: 包含了Apache Jakarta ORO库,它是一个正则表达式和模式匹配库,...
- **异步调用与本地调用**:支持异步调用机制和本地调用模拟远程调用。 ### 注册中心参考手册 Dubbo支持多种注册中心,包括Multicast、Zookeeper、Redis等。每种注册中心都有其特点,可以根据实际需求和环境选择...