免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 风舞
打印 上一主题 下一主题

询问telnet协议编写程序 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2006-07-27 14:05 |只看该作者

自动 telnet 到远程主机,执行你想要的操作

to 楼主:

自动 telnet  到远程主机,执行你想要的操作,这个功能 shell 就能够实现。 下面是我举的例子,楼主可以参考一下。。。

#!/bin/bash

tmptty=`tty`                 #取得当前的tty值
tmptty=`basename $tmptty`    #去掉tty的绝对路径
tmpname=`whoami`             #取得当前执行程序的用户名
ip="10.22.33.44"             #目标主机地址
inp1="ABC^M"                 #主机的用户名,注意^M必须在UNIX下重装用以下方法输入才能用!!
                             #方法为按住ctrl键按v键,不放ctrl键,再按shift键和m键,完成后全部放开
inp2="ABC^M"                 #主机的密码,注意必须有^M
inp3="ls^M"                  #其他进入后的命令,可无或用ls之类的命令代替,注意必须有^M
inp4="pwd^M"                 #命令4,同上
#--------------------------

inputfile=in                 #导入文件管道用的,不要改,这个值没有任何关系
outputfile=out.log           #最终导出的文件
rm -fr $inputfile
rm -fr $outputfile
mknod $inputfile p
touch $outputfile

#file description 7 for out and 8 for in 使用7作为输入管道,8作为输入
exec 7<>$outputfile
exec 8<>$inputfile

telnet $ip <&8 >&7 &

sleep 2; echo $inp1 >> $inputfile      #看得懂吧
sleep 2; echo $inp2 >> $inputfile   
sleep 2; echo $inp3 >> $inputfile      #如果没有其他命令,这行和下一行可以去掉
sleep 2; echo $inp4 >> $inputfile

tail -f $outputfile &        强制在屏幕上显示任何输入输出

while true                   #正常情况下已经进入目标主机了,可以输入任何命令,所有的一切输入输出都会被记录
do
  read str
  if [[ $str = "quit" || $str = "exit" ]]
  then echo $str >> $inputfile ; exit
  else echo $str >> $inputfile
  fi
done

#退出时自动杀掉相关进程
ps -ef | grep telnet | grep -v grep | grep -v telnetd | grep $tmptty | grep $tmpname | awk '{print " kill -9", }' | sh
ps -ef | grep tail | grep -v grep | grep -v telnetd | grep $tmptty | grep $tmpname | awk '{print " kill -9", }' | sh

论坛徽章:
0
32 [报告]
发表于 2006-07-27 17:55 |只看该作者
TELNET协议只是数据传输的协议。谁管你传不传密码啊。TCP要密码么?

论坛徽章:
0
33 [报告]
发表于 2006-07-27 17:58 |只看该作者
要获取远端的信息。为啥用telnet呢?你的思路是不是有些偏差呢?

论坛徽章:
0
34 [报告]
发表于 2006-07-28 08:37 |只看该作者

这个倒是个问题

原帖由 chunhui_true 于 2006-7-27 17:58 发表
要获取远端的信息。为啥用telnet呢?你的思路是不是有些偏差呢?


我还没想到其他方法!!
expect我不懂!
我知道得只有c!!

现在才发现俺得视野是多么得窄!!

论坛徽章:
0
35 [报告]
发表于 2006-07-28 08:39 |只看该作者

能开放一下吗?

原帖由 800long 于 2006-7-26 18:58 发表
前段时间我也做了类似的程序。写些体会给LZ,
首先考虑的是except,结果由于服务器端(改写的telnet服务器端)的特殊性,except不能满足要求,所以采用c/c++实现。
用C/C++实现,在知道TELNET协议的前提下,自己 ...



可以把你得东东稍微透露一下吗?

等待中。。。。。。

论坛徽章:
0
36 [报告]
发表于 2006-07-28 09:34 |只看该作者
虽然偶不太懂,不过偶还是觉得类似的东西应该用脚本语言来玩比较好。
另外,楼主在类unix下工作说自己只懂c好像不太对阿。
最少应该懂shell另加一门python这类的玩意啊

论坛徽章:
0
37 [报告]
发表于 2006-07-28 09:42 |只看该作者

申明一下

原帖由 Cocory 于 2006-7-28 09:34 发表
虽然偶不太懂,不过偶还是觉得类似的东西应该用脚本语言来玩比较好。
另外,楼主在类unix下工作说自己只懂c好像不太对阿。
最少应该懂shell另加一门python这类的玩意啊


shell稍微懂一点,但是python是啥我就不知道了啊!!

不要见笑啊!!

论坛徽章:
0
38 [报告]
发表于 2006-07-28 10:43 |只看该作者
原帖由 mingyanguo 于 2006-7-26 14:47 发表

我是说不需要与人的交互,比如登陆到主机上执行一些命令,获取主机返回的信息。
这与telnet客户端是不一样的,telnet客户端需要与人交互。

PS.google一下telnet client 或者simple telnet代码成堆。为什么就 ...


没google到啊,大虾能给个链接吗?或者直接发送到我邮箱,liltech@163.com,多谢了!

论坛徽章:
0
39 [报告]
发表于 2006-07-28 11:35 |只看该作者
google `TS_IAC' 之类的。

论坛徽章:
0
40 [报告]
发表于 2006-07-28 14:08 |只看该作者
我有个疑问,所谓的编写telnet client程序是不是完成类似netterm那样类似的功能,还是简单的IAC命令。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP