我想用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
进入后执行下列命令
HammerOS Version 1.4(Build 0113) on uHammer2824. Login: admin
Password:123 xue_16> en
Password:123 xue_16(config)# delete fdbentry 000000000000
或使用Tdoscommand执行plink.exe再发送命令
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做试验