線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1390
推到 Plurk!
推到 Facebook!

請教TIdTelnet問題-如何得知執行Script完畢?

答題得分者是:zycagod
JammyHsu
一般會員


發表:14
回覆:39
積分:10
註冊:2003-09-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-09 15:50:02 IP:140.128.xxx.xxx 未訂閱
問題:   整個telnet程式不等命令完成就斷線, 導致testfile沒有建立   如果我在OnDataAvailable加入ShowMessage(Buffer), 則無誤   我想, 應該是程式執行快, 沒有等待結果回應就已經執行disconnect   不知有什麼可用的訊息得知已完成所有的命令?        cmdlist:=TStringList.Create;     cmdlist.Add('username');     cmdlist.Add('password');     cmdlist.Add('rm -f testfile');     cmdlist.Add('echo `date` '+aryEMail[2]+' > testfile');     cmdlist.Add('crontab -l >> testfile');     Telnet('host.xxx.xxx.xx', 23, cmdlist);    程式如下: procedure TfmAGCReport.Telnet(const tServer: String; const tPort: Integer; const tCmdList: TStringList); var   i, j: Integer;   CmdStr: String; begin   with IdTelnet1 do   begin     Host:=tServer;     Port:=tPort;     try       if Connected then Disconnect;       Connect;       for i:=0 to tCmdList.Count-1 do       begin         CmdStr:=tCmdList.Strings[i];         for j:=1 to Length(tCmdList.Strings[i]) do           SendCh(CmdStr[j]);         SendCh(#13);       end;       Disconnect;       ShowMessage('遠端控制命令傳送完畢!');     except       on E: Exception do         ErrorMessage('遠端控制命令傳送失敗:'+E.Message);     end;   end; end;
zycagod
一般會員


發表:0
回覆:14
積分:12
註冊:2002-07-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-09 16:31:35 IP:210.202.xxx.xxx 未訂閱
應該是叫你打Username 再鍵入Username,叫你打Password 再打Password. 你這樣寫不是一下就送完 全部指令了? Var TestStr:String; procedure TForm1.Telnet1DataAvailable(Sender: TIdTelnet; const Buffer: String); begin 請善用此Buffer. end; 發表人 - zycagod 於 2004/03/09 16:36:52
JammyHsu
一般會員


發表:14
回覆:39
積分:10
註冊:2003-09-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-09 17:38:55 IP:140.128.xxx.xxx 未訂閱
引言: 應該是叫你打Username 再鍵入Username,叫你打Password 再打Password. 你這樣寫不是一下就送完 全部指令了? Var TestStr:String; procedure TForm1.Telnet1DataAvailable(Sender: TIdTelnet; const Buffer: String); begin 請善用此Buffer. end; 發表人 - zycagod 於 2004/03/09 16:36:52
我知道你的意思 我用'login:' 'Password:' '@mail)/' 來比對回應的Buffer 是可行的 只是這樣子, 萬一顯示的大小寫或內容不一樣 比如進入mail server後的shell提示字元不同, 不就變成無窮迴圈 當然我可以加入timeout計數 只是感覺不夠好 --
系統時間:2024-05-12 12:10:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!