我想用Delphi编写一个后台的telnet命令   命令,应该怎么做 例如telnet   10.2.56.14 
进入后执行下列命令 
HammerOS   Version   1.4(Build   0113)   on   uHammer2824. Login:   admin 
Password:123 xue_16>   en 
Password:123 xue_16(config)#   delete   fdbentry   000000000000 

解决方案 »

  1.   

    找一个支持外部脚本的telnet工具,指明脚本文本文件作为参数来执行此工具
    或使用Tdoscommand执行plink.exe再发送命令
      

  2.   


    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
      IdTCPClient, IdTelnet;type
      TForm1 = class(TForm)
        Memo1: TMemo;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;type
            TelnetThread = class(TThread)
            private
                    IdTelnet1: TIdTelnet;
                    mBuf: string;
                    user, pwd, cmd: string;
                    procedure UpdateMemo();
                    procedure IdTelnet1DataAvailable(Sender: TIdTelnet; const Buffer: String);
            protected
                    procedure Execute;override;
    end;var
      Form1: TForm1;
      mTelnet: TelnetThread;implementation{$R *.dfm}
    procedure TelnetThread.Execute;
    begin
            user := 'administrator';
            pwd := 'your password';
            cmd := 'dir';
            IdTelnet1 := TIdTelnet.Create(nil);
            IdTelnet1.OnDataAvailable := IdTelnet1DataAvailable;
            IdTelnet1.Host := '192.168.1.104';
            IdTelnet1.Connect(1000);
            while not Terminated do
                    sleep(1000);        if IdTelnet1.Connected then
                    IdTelnet1.WriteLn('exit');
            sleep(1000);
            IdTelnet1.Destroy;        mBuf := 'bye';
            Synchronize(UpdateMemo);
    end;procedure TelnetThread.IdTelnet1DataAvailable(Sender: TIdTelnet;
      const Buffer: String);
    begin
            mBuf := Buffer;
            Synchronize(UpdateMemo);
            if Pos('login:',Buffer)>0 then
                    IdTelnet1.WriteLn(user);
            if Pos('password:',Buffer)>0 then
                    IdTelnet1.WriteLn(pwd);
            if Pos('Welcome to Microsoft Telnet Server.',Buffer)>0 then
                    IdTelnet1.WriteLn(cmd);
    end;procedure TelnetThread.UpdateMemo();
    begin
            Form1.Memo1.Lines.Add(mBuf);
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
            mTelnet := TelnetThread.Create(True);
            mTelnet.FreeOnTerminate := False;
            mTelnet.Resume;
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
            if Assigned(mTelnet) then
            begin
                    mTelnet.Terminate;
                    mTelnet.WaitFor;
                    mTelnet.Destroy;
            end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
            mTelnet := nil;
    end;end.
    用的是window自带的telnet server做试验
      

  3.   

    indy有一个TIdTelnet,可以研究一下怎么用