kelefa  
          大千世界中,唯一缺乏的就是人類的注意力。
          日歷
          <2006年6月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678
          統(tǒng)計
          • 隨筆 - 11
          • 文章 - 0
          • 評論 - 28
          • 引用 - 0

          導(dǎo)航

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

           
          ??????? kelefa是某公司的一個程序員,傳說他是一流的程序員,開發(fā)了一個系統(tǒng)非常穩(wěn)定,從來沒有出現(xiàn)過問題,當(dāng)然這世界上沒有完美的人,也沒有完美的軟件,這個系統(tǒng)也有bug,而且他已經(jīng)發(fā)現(xiàn)了,但是一直沒有找到很好的辦法解決,還好這個bug很少有機會能發(fā)作,關(guān)鍵是一發(fā)生這種情況時嚴(yán)重影響系統(tǒng)的運行,停止服務(wù)后再重新啟動是目前最好的方法。

          ??????? 為了保住“高手”的稱號,他又搞了一個監(jiān)控該系統(tǒng)的小程序,能及時發(fā)現(xiàn)系統(tǒng)是否工作正常,如果發(fā)現(xiàn)異常情況立刻發(fā)送email給自己,email又跟自己的手機短信綁定,使他能迅速的發(fā)現(xiàn)情況并跑到電腦前:
          //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分鐘內(nèi)搞定,一流程序員再次得到驗證,可是email有時會發(fā)送失敗,sp的短信也不是絕對的正常,而且每個月還給n元大洋給sp,萬一收到告警短信旁邊沒有電腦也無能為力。

          ??????? 終于發(fā)現(xiàn)更好的方法:在監(jiān)控程序里直接telnet到設(shè)備上進行操作,動手前當(dāng)然要看看有什么開源的可以利用,它就是Jakarta的Commons Net,這個包支持ftp,telnet,pop3,smtp,nntp等協(xié)議。

          ??????? 首先實現(xiàn)一個telnet的基類,它有個connectAndDocommad()的方法,實現(xiàn)鏈接到指定的設(shè)備上,并啟動一個線程執(zhí)行一個模板方法(某設(shè)計模式):


          ?? // 登陸
          ???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繼承該抽象類,實現(xiàn)doCommand()抽象方法,往輸出流發(fā)送操作命令,實現(xiàn)重啟:

          @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() );
          ??}
          ?}


          以上為偽代碼,需要實現(xiàn)一些子方法, 如有雷同,純屬虛構(gòu)!
          posted on 2006-06-30 23:52 楊杰榮 閱讀(5403) 評論(3)  編輯  收藏 所屬分類: 開源應(yīng)用
          評論:
          • # re: 在java程序里telnet到遠(yuǎn)端設(shè)備執(zhí)行命令  JavaVM Posted @ 2006-07-07 00:31
            kalafa的確是個一流的程序員,不過人長的有點招警察(太彪漢了),呵呵 記得有一次和他一起出差,竟然被警察查。原因我想有二個,一是我太帥了,不知道是不是我的帥引起了警察叔叔的注意,還是kalafa將手放在胸口上,并不停的做出要掏出什么東西。  回復(fù)  更多評論   

          • # re: 在java程序里telnet到遠(yuǎn)端設(shè)備執(zhí)行命令  xiejitao Posted @ 2007-11-06 17:28
            大俠,能把你寫的代碼給我看看嗎?現(xiàn)在的代碼沒有涉及到我現(xiàn)在急需"在java程序里telnet到遠(yuǎn)端設(shè)備執(zhí)行命令"的具體實現(xiàn).但由于水平有限,解決不了,還望高人多多指教.如過可能給發(fā)份代碼到我郵箱好嗎? 多謝! 郵箱:xiejitao2006@126.com  回復(fù)  更多評論   

          • # re: 在java程序里telnet到遠(yuǎn)端設(shè)備執(zhí)行命令  vavi Posted @ 2007-12-07 10:57
            回復(fù)ls的...
            你去google或baidu下
            搜索 commons-net-1.2.2.jar
            有例子程序的  回復(fù)  更多評論   

           
          Copyright © 楊杰榮 Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 赤城县| 大荔县| 昌乐县| 谢通门县| 中方县| 项城市| 台北县| 泰安市| 赤壁市| 麻栗坡县| 阳高县| 富锦市| 阿巴嘎旗| 清水县| 即墨市| 泸溪县| 米泉市| 靖州| 芷江| 中宁县| 韶关市| 井冈山市| 太和县| 鹤壁市| 通化市| 平安县| 民丰县| 万安县| 如东县| 增城市| 无极县| 丽水市| 金川县| 洛浦县| 文成县| 洪湖市| 米林县| 武威市| 潼关县| 南郑县| 柯坪县|