我竟然不會用PHP寫TELNET功能 @@

DATE: 02/24/2005 10:04:37 PM

這兩天寫各小工具
需要TELNET到遠端一台SERVER去執行幾各指令,並抓回回傳值
本來想 不就是TELNET 直接開SOCKET就得了 小事一件

沒想到…..
開SOCKET是沒有錯
回傳值卻始終是亂碼,可是TELNET應該是回傳字串阿 DO SI DA

話說回來,這是啥年代了,還用TELNET,不知道有個咚咚叫SSH嗎?
只是很不幸的,執行PHP的地方是一台暈倒2000
(我也好想暈倒 >_<)
不管我自己寫也好,抓別人寫的元件也好
一樣是 DA MAE

火大不用PHP改用PERL…….竟然也是一樣
這…這…
我敗了 Orz
為什麼我得要開這種拼裝車ㄌ….
換台LINUX或BSD不就一切都解決了嗎
天阿 誰來解救我

廣告

我竟然不會用PHP寫TELNET功能 @@” 有 0 則迴響

  1. 在 php 官網上面有人有寫 怎樣 telnet 抓資料,不過似乎只對部分作業系統有效,偏偏我要抓的是FreeBSD 唉

  2. 我最後的作法是把TELNET的功能拉出來用PERL做
    然後用PHP去執行那支PERL
    你參考看看
    BY THE WAY 我也是去抓BSD
    從WINDOW上TELNET到BSD 😦

  3. 我認輸了 FreeBSD 用的telnet 是 SRA 我抓到server傳過來的 “IAC DO AUTHENTICATION" 就投降了看到RFC裡面的範例,繁複的交換資訊步驟實在讓人無力,只能採用你說方法了,但是我對perl完全不熟悉,不知道可否教導小弟一點?

  4. 呵呵 其實CODE不難 但是要裝CPAN的TELNET LIB
    下面是我寫的CODE 指令用參數帶
    就是用PHP shell_exec(PERLSCRIPT $1) 的方式執行
    CPAN的安裝網路上很多 不贅述

    use Net::Telnet;

    $telnet = Net::Telnet->new( Timeout=>10,
    Errmode=>’die’,
    Prompt=>"
    )or die $telnet->errmsg;

    $telnet->open(‘$server’);
    $telnet->login(“$user","$pass");

    while () {
    $cmd = “要執行的指令";
    print $cmd;
    @lines = $telnet->cmd($cmd);
    print @lines; #印出結果
    print “\n"; #跳下一行
    }

    $ok = $telnet->close or die “Oops!";

  5. 哈,實在太感謝了,我要做的是對多台不同的server去做管理的動作,像是重開機、關機之類的指令,利用php在網頁上按一按,就可以方便管理多台server,是工作上方便的小幫手,哈。

  6. 再請教一下,我遇到很神奇的問題,我對FreeBSD 4.11做telnet時,並沒有打上 pormpt,用預設就可以成功連線,但是對SunOS 5.8 卻必須把 prompt 指定為 ‘/[\$%#>]$/’,但是前面那個就是cpan上面文件寫的defalut設定值,這真的是讓我很驚奇!

  7. 那是提示字符號不同的緣故
    他是抓最後回傳的提示字符號 來判斷是否可以輸入指令
    所以必須用正規表示式來CHECK
    預設的好像是#吧

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

w

連結到 %s