XZC.Log
BlogJava
首页
新随笔
联系
聚合
管理
随笔-314 评论-209 文章-0 trackbacks-0
Java通过Telnet连接执行shell脚本
/**
* 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();
}
}
}
posted on 2010-09-29 15:56
xzc
阅读(4424)
评论(0)
编辑
收藏
所属分类:
Java
、
linux/unix
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
Kerberos简介
快使用阿里云的maven仓库
JAVA对于数字证书的常用操作方法
DER 和 PEM 格式
深入理解 Java中的 流 (Stream)
JAVA 命令参数详解:-D
静态html文件js读取url参数
Java Cookie 中文乱码解决方法
web.xml中load-on-startup的作用
java keytool 使用总结(转)
<
2010年9月
>
日
一
二
三
四
五
六
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(12)
给我留言
查看公开留言
查看私人留言
随笔分类
BPM(1)
Design(5)
Eclipse(2)
hadoop(34)
Hibernate(1)
Java(55)
linux/unix(70)
Log4j(5)
Maven(4)
mysql(4)
Oracle(73)
Other(10)
python(3)
Spring(12)
Struts(1)
SybaseIQ(3)
TDD(2)
UML(2)
Web(12)
Xdoclet(8)
XML(17)
随笔档案
2018年11月 (3)
2018年9月 (1)
2018年5月 (1)
2018年3月 (2)
2017年10月 (3)
2017年9月 (4)
2017年8月 (3)
2017年7月 (3)
2017年5月 (4)
2017年4月 (6)
2016年9月 (2)
2016年4月 (1)
2016年3月 (3)
2016年2月 (2)
2015年12月 (7)
2015年11月 (7)
2015年10月 (4)
2015年9月 (10)
2015年8月 (1)
2015年7月 (1)
2015年6月 (1)
2015年4月 (1)
2015年2月 (3)
2015年1月 (5)
2014年12月 (3)
2014年9月 (2)
2013年10月 (1)
2013年2月 (1)
2012年8月 (2)
2012年7月 (1)
2012年6月 (1)
2012年3月 (3)
2011年12月 (2)
2011年11月 (1)
2011年10月 (1)
2011年9月 (2)
2011年8月 (4)
2011年7月 (6)
2011年6月 (4)
2011年5月 (2)
2011年4月 (4)
2011年3月 (8)
2011年1月 (3)
2010年12月 (9)
2010年11月 (3)
2010年10月 (1)
2010年9月 (5)
2010年8月 (6)
2010年7月 (6)
2010年6月 (2)
2010年4月 (7)
2010年3月 (9)
2010年2月 (1)
2010年1月 (2)
2009年12月 (3)
2009年10月 (1)
2009年9月 (3)
2009年8月 (5)
2009年6月 (4)
2009年1月 (1)
2008年11月 (7)
2008年10月 (2)
2008年9月 (1)
2008年6月 (7)
2008年5月 (7)
2007年12月 (1)
2007年11月 (4)
2007年10月 (3)
2007年9月 (3)
2007年7月 (1)
2007年6月 (2)
2007年3月 (1)
2007年2月 (1)
2006年12月 (5)
2006年11月 (23)
2006年10月 (18)
2006年9月 (16)
2006年8月 (11)
2006年6月 (3)
2006年4月 (1)
收藏夹
xzc(12)
搜索
最新评论
1. re: Hive中reduce个数设定
评论内容较长,点击标题查看
--xzc
2. re: shell时间处理、加减、以及时间差
评论内容较长,点击标题查看
--xzc
3. re: Shell字符串比较相等、不相等方法小结
评论内容较长,点击标题查看
--xzc
4. re: shell判断文件是否存在
评论内容较长,点击标题查看
--xzc
5. re: curl模拟http发送get或post接口测试
评论内容较长,点击标题查看
--xzc
阅读排行榜
1. web.xml中load-on-startup的作用(149926)
2. Oracle中start with...connect by子句的用法 (49564)
3. 数据库设计准则(第一、第二、第三范式说明)(44816)
4. Oracle闪回查询恢复delete删除数据(27776)
5. shell 判断字符串是否存在包含关系(26417)
评论排行榜
1. web.xml中load-on-startup的作用(22)
2. 数据库设计准则(第一、第二、第三范式说明)(17)
3. rowid 删除重复记录!!! (8)
4. oracle日期处理完全版(8)
5. Oracle SQL 内置函数大全(6)