kelefa  
大千世界中,唯一缺乏的就是人类的注意力。
日历
<2006年7月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345
统计
  • 随笔 - 11
  • 文章 - 0
  • 评论 - 28
  • 引用 - 0

导航

常用链接

留言簿(2)

随笔分类

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 
        kelefa是某公司的一个程序员,传说他是一流的程序员,开发了一个系统非常稳定,从来没有出现过问题,当然这世界上没有完美的人,也没有完美的软件,这个系统也有bug,而且他已经发现了,但是一直没有找到很好的办法解决,还好这个bug很少有机会能发作,关键是一发生这种情况时严重影响系统的运行,停止服务后再重新启动是目前最好的方法。

        为了保住“高手”的称号,他又搞了一个监控该系统的小程序,能及时发现系统是否工作正常,如果发现异常情况立刻发送email给自己,email又跟自己的手机短信绑定,使他能迅速的发现情况并跑到电脑前:
//telnet进来后
[root@kelefa root]$ su -
[root@kelefa root]$ password 
[root@kelefa root]# cd 
/usr/local/resin-3.0.14/bin
[root@kelefa bin]# ./httpd.sh  stop
[root@kelefa bin]# .
/httpd.sh  start

一切又正常了,1分钟内搞定,一流程序员再次得到验证,可是email有时会发送失败,sp的短信也不是绝对的正常,而且每个月还给n元大洋给sp,万一收到告警短信旁边没有电脑也无能为力。

        终于发现更好的方法:在监控程序里直接telnet到设备上进行操作,动手前当然要看看有什么开源的可以利用,它就是Jakarta的Commons Net,这个包支持ftp,telnet,pop3,smtp,nntp等协议。

        首先实现一个telnet的基类,它有个connectAndDocommad()的方法,实现链接到指定的设备上,并启动一个线程执行一个模板方法(某设计模式):


   // 登陆
   log.debug( "login................" );
   if ( false == login() )
   {
    String msg = new Date().toString() + " telnet登陆不成功,ip:" + remoteip;
    log.warn( msg );
    SyslogUtil.send( msg );
    return;
   }

   log.debug( "doCommand................" );
   // 抽象方法
   doCommand();

   // 退出
   log.debug( "exit................" );
   exit();


        其次类RestartTask继承该抽象类,实现doCommand()抽象方法,往输出流发送操作命令,实现重启:

@Override protected void doCommand()
 {
  log.debug( "resin restart................" );
  try
  {
     writeLine("su -");    
     writeLine("password"); 
     writeLine("cd /usr/local/resin-3.0.14/bin");
     writeLine("./httpd.sh  stop");
     writeLine("./httpd.sh  start");

     readResult();
  }
  catch ( IOException e )
  {
   log.warn( e.getMessage() );
  }
 }


以上为伪代码,需要实现一些子方法, 如有雷同,纯属虚构!
posted on 2006-06-30 23:52 杨杰荣 阅读(5360) 评论(3)  编辑  收藏 所属分类: 开源应用
评论:
  • # re: 在java程序里telnet到远端设备执行命令  JavaVM Posted @ 2006-07-07 00:31
    kalafa的确是个一流的程序员,不过人长的有点招警察(太彪汉了),呵呵 记得有一次和他一起出差,竟然被警察查。原因我想有二个,一是我太帅了,不知道是不是我的帅引起了警察叔叔的注意,还是kalafa将手放在胸口上,并不停的做出要掏出什么东西。  回复  更多评论   

  • # re: 在java程序里telnet到远端设备执行命令  xiejitao Posted @ 2007-11-06 17:28
    大侠,能把你写的代码给我看看吗?现在的代码没有涉及到我现在急需"在java程序里telnet到远端设备执行命令"的具体实现.但由于水平有限,解决不了,还望高人多多指教.如过可能给发份代码到我邮箱好吗? 多谢! 邮箱:xiejitao2006@126.com  回复  更多评论   

  • # re: 在java程序里telnet到远端设备执行命令  vavi Posted @ 2007-12-07 10:57
    回复ls的...
    你去google或baidu下
    搜索 commons-net-1.2.2.jar
    有例子程序的  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 
 
Copyright © 杨杰荣 Powered by: 博客园 模板提供:沪江博客