各位高手我想实现一个这样的功能,就是用Delphi编写后台用交换机的指令访问交换机
比如编写先用telnet命令访问一个交换机地址为10.10.10.1的交换机,然后输入用户名,密码
然后执行delete的命令。请问怎么编写啊?

解决方案 »

  1.   

    不是所有的交换机和路由器都支持telnet的,有些只支持http接口。
      

  2.   

    我现在所用的交换机全部都带WEB管理的界面,全都支持HTTP
      

  3.   

    是啊,说的就是有些不支持telnet的。
      

  4.   

    写一个文本文件,里面是telnet命令,重定向到telnet.exe就可以了。
    telnet <cmd.txt
      

  5.   

    我们宿舍经常要重启宽带猫,华为的,我刚好写了一个跟你的要求差不多的,发给你参考一下吧加个 ClientSocket1 控件在窗体上,端口设置为23,IP为交换机的IP,active为True
    再加个Memo1来显示提示信息,
    双击 ClientSocket1 的 OnRead 事件进去,编写代码如下即可:procedure TForm1.ClientSocket1Read(Sender: TObject;
      Socket: TCustomWinSocket);
    var
      rcv:string;
    begin
      rcv:=socket.ReceiveText; //接收交换机发来的数据
      Memo1.Lines.Append(rcv); //把接收的显示出来
      if pos('login:',rcv)>0 then //如果有login:字符串就说明要输入用户名了,对不同的机子可以改成相对应的。
      begin
        socket.SendText('admin'+#13+#10);//发送用户名
      end
      else if pos('password:',rcv)>0 then//如果要求输入密码
      begin
        socket.SendText('311admin'+#13+#10);//发送密码
      end
      else if pos('Login Successful',rcv)>0 then//如果提示登录成功,下面就可以发命令了
      begin
        socket.SendText('reboot'+#13+#10);//这里你改为你的命令delete就可以了
        Memo1.Lines.Append('重启成功!会掉线几秒钟,请稍等');
        sleep(3000);//等几秒钟
        application.Terminate;//退出程序
      end;
    end;
      

  6.   

    如果支持telnet或是http的管理界面。那就说明,当普通网页访问是一样的编程方法。
    楼上就是正解。。
    我来接分。。代码就不写了。利用先人的经验吧
      

  7.   

    不行啊!那如果我想实现如下的telnet 的命令应该怎么做呢?telnet 10.2.56.14
    进入到如下命令
    HammerOS Version 1.4(Build 0113) on uHammer2824.Login: admin
    Password:xue_16> en
    Password:xue_16(config)# delete fdbentry 000000000000
    如何编写
      

  8.   

    提示一下,不能公布代码如果要以后经常使用的话,建议采用脚本方法具体的记不清楚了 肯定有一个readtimeout 类似的,比如当 你设置的readtimeout 为100 ms 当 它报read time out 错误的话,就基本证明 服务器在等待你输入内容
    你可以获取到接受的字符,判断是否为 你所需要的开头,如果是,就把你输入的内容发送的服务器端,如此循环,直到你输入完成或者必能匹配你下一步操作的前标
      

  9.   

    具体点,就是 用 socket 来做,连接到 21端口,然后读信息,然后判断读到的信息正确,再写信息就这么多简单,我在JAVA下做个 用TELNET协议,设置交换机命令的功能。