如何在 telnet 上Linux主机后执行命令.docx
- 文档编号:10995589
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:32
- 大小:33.68KB
如何在 telnet 上Linux主机后执行命令.docx
《如何在 telnet 上Linux主机后执行命令.docx》由会员分享,可在线阅读,更多相关《如何在 telnet 上Linux主机后执行命令.docx(32页珍藏版)》请在冰豆网上搜索。
如何在telnet上Linux主机后执行命令
1如何在telnet上Linux主机后远程执行主机上的shell脚本
从Windowstelnet到Linux,建立主机与设备的通信,这是典型的嵌入式测试环境。
我的问题代表了一类人的需求。
[url]
这个4楼的帖子具有相当的参考价值。
又是一种方法。
稍作修改和封装,如下:
[code]
;UsingnativesocketconnectiontosimulatesaTELNETconnectiontocommunicatewithLinuxmachineforsendingcommandsandreceivinginfofromit
$port=23
$user="root"
$passwd="xxxxxx"
TCPStartup()
$socket=TCPConnect($host,$port)
If$socket=-1Then
MsgBox(48,"Error","Connectionfail!
")
Exit
EndIf
Sleep(300)
$ack=TCPRecv($socket,150)
IfStringInStr($ack,"login")>0Then
TCPSend($socket,$user&@CRLF)
Sleep(500)
TCPSend($socket,$passwd&@CRLF)
Else
MsgBox(48,"Error","Cannotconnect")
Exit
EndIf
wait_cmd_prompt($socket)
TCPSend($socket,$cmd1&@CRLF)
wait_cmd_prompt($socket)
TCPSend($socket,$cmd2&@CRLF)
wait_cmd_prompt($socket)
TCPCloseSocket($socket)
TCPShutdown()
;================================================================================================
; FunctionDefinition
;================================================================================================
;Waitfordesiredcommandpromptcharacter"#"beforesending.
Funcwait_cmd_prompt($sk)
Local$ack
Do
$ack=StringStripWS(TCPRecv($sk,300),2)
Sleep(300)
;MsgBox(0,"",$ack)
UntilStringRight($ack,1)="#"
;MsgBox(0,"","outofloop")
EndFunc[/code]不过,我一楼发的问题还没得到解决。
运行设备端(Linux环境)的脚本(shell脚本)远比远程命令控制来得可靠,因为这样Linux的一些环境变量是可继承的。
继续研究中。
minterz 发表于2011-2-2219:
51
linxu下的bash脚本如果要远程启动
可以使用plink使用ssh远程控制
xiehuahere 发表于2011-2-2312:
11
谢谢楼上的,我试试。
另外,这样也行:
TCPSend($socket,"/home/script.sh"&$param&@CRLF)
Posted 14October2008-09:
19PM
Whynotusingnativesocketconnectionslikefollowingexample.
Iamusingthisalgorithmtocommunicatewithmyrouter(Linuxmachine)forsendingcommandsandreceivinginfofromit.
Besuretoreplacespecificinformation.
;BEGINSCRIPT----------------------------------------------
;simulatesaTELNETconnection
Global$host,$port,$delay,$user,$pass,$sk,$ack
$host="192.168.1.1"
$port=23
;milisecondstowaitbeforesending/receivingsomething
$delay=300;compensatesnetwork/internetdelays
$user=""
$pass=""
TCPStartup()
$sk=TCPConnect($host,$port)
;ifinvalidsocket
If$sk=-1Then
MsgBox(0,"","Cannotconnect")
Exit
EndIf
;messagefromdevice
Sleep($delay)
$ack=TCPRecv($sk,150)
TrayTip("",$ack,10)
;verifyingthecorrectanswer
IfStringInStr($ack,"wl500gplogin")>=1Then
;ifthestringiscorrectthenwesenduser
Sleep($delay)
TCPSend($sk,$user&@CRLF)
Sleep($delay)
$ack=TCPRecv($sk,80)
TrayTip("",$ack,10)
;andpassword
Sleep($delay)
TCPSend($sk,$pass&@CRLF)
Sleep($delay)
$ack=TCPRecv($sk,80)
TrayTip("",$ack,10)
Else
MsgBox(0,"","Cannotconnect")
Exit
EndIf
;verifyingtheanswerofthedevice(thepromptthatitreturnsafterreceivinguserandpassword)
IfStringInStr($ack,"root]$")=0Then;attention,thisstringisspecific
MsgBox(0,"Error","Accessdenied")
Exit
EndIf
;nowyoucansendsomecommands
Sleep($delay)
TCPSend($sk,"ps"&@CRLF)
Sleep($delay)
$ack=TCPRecv($sk,2000)
MsgBox(0,"Runningprocesses",$ack)
TCPCloseSocket($sk)
TCPShutdown()
Exit
;ENDSCRIPT----------------------------------------------
2Shell脚本自动telnet到远程Linux主机执行操作
分类:
Shell,程序脚本 |作者:
KingGoo.Com|发表于2011/03/16没有评论
这几天忙,有空的时候还在做OpenLdap单点认证服务。
也没时间去研究其他的东东,哦当然还有破解掉Crowd2.0.1(嗯,没错是网上找的方法及Keymaker)。
忙的我一点也不充实~
今天一群里好友问自动telnet到远程主机进行服务器操作等,当时给他提的建议是做个ssh公钥,然后本地Shell脚本循环远程操作就可以了,没暂时没被他采纳~系统是UNIX的~故此有了下面这个东东~
给自己做个记录!
( Window利用vbs脚本远程telnet执行远程主机程序 )
执行格式是这样的里面的sleep是为了下一步程序运行完全而做的延迟。
后面的while死循环是为了让以前的全部command执行完毕
(sleep1;echoname;sleep1;echopasswd;sleep1;echocommand;sleep5;whiletrue;dosleep1;done;)|telnetIP
#name=可以telnet到远程主机的用户
#passwd=当前可以telnet到远程主机的用户的密码
#command=远程需要执行的命令
#IP=远程主机IP地址
#Shell脚本:
#!
/bin/bash
(sleep1;echo用户名;sleep1;echo密码;sleep1;echo命令;sleep1;sleep5;whiletrue;dosleep1;done;)|telnet192.168.10.235
还可以使用linuxexec
:
:
:
:
:
:
:
:
:
:
:
:
善待他人就是善待自己!
都要从朦胧到澄清!
需要互相帮助!
也希望日本这场灾难早日过去。
(我们是愤青,我们更好我自己的祖国!
但我们不是畜牲对吧!
)
3Windows远程telnet到Linux,需分三步走:
首先,开启Linux中的network、telnet、xinetd服务。
以root用户登陆Linux,使用ntsysv命令调出服务管理工具,确认其中的network、telnet、xinetd服务已启动,必要时可关闭iptables服务。
其次,新建一个用户。
同样以root用户登陆Linux,使用useradd和passwd命令新建一个非root的普通用户。
在此列下小编新建用户时的代码:
useraddsun(回车)
passwdsun(回车)123(回车)123(回车)
这样,就创建了一个密码为123的sun用户。
最后,使用SSH远程访问Linux。
运行SSH,在弹出的连接设置对话框内,将Linux的IP地址、Linux用户名输入到HostName、UserName,确认后,输入用户密码,再确认。
注意,此处输入的Linux的IP地址可通过ifconfig命令查看,Linux用户名可以是sun或其他新建普通用户,但不可以是root用户。
因为Linux在TELNET下是不允许直接用ROOT登陆的!
但登陆后可以用su命令转到root下。
4利用vbs脚本远程telnet执行远程主机程序
分类:
Vbs |作者:
KingGoo.Com|发表于2010/10/094条评论
‘建立Shell对象
setsh=WScript.CreateObject("WScript.Shell")
WScript.Sleep1000
‘启动telnet,注意要保证telnet.exe程序所在的路径如c:
\winnt\system32在path环境变量中
sh.Run "telnet.exe"
WScript.Sleep1000
‘向telnet发送我们平时录入的命令
sh.SendKeys"open192.168.10.120"
WScript.Sleep1000
sh.SendKeys"{ENTER}"
WScript.Sleep1000
sh.SendKeys"n{ENTER}"
sh.SendKeys"{ENTER}"
WScript.Sleep1000
‘发送登陆用户User
sh.SendKeys"administrator{ENTER}"
WScript.Sleep1000
‘发送登陆密码pass
sh.SendKeys"{ENTER}"
WScript.Sleep1000
‘运行相关命令pwd
sh.SendKeys"cdliuxue{ENTER}"
‘运行退出TELNET登陆命令
sh.SendKeys"mkdir123{ENTER}"
sh.SendKeys"echoquit>>12.txt{ENTER}"
sh.SendKeys"quit{ENTER}"
5挖Linux中的古老缩略语
【2005-06-22 15:
23】【Nigel McFarlane】【TechTarget】
<<阅读原文>>
Unix已经有35年历史了。
许多人认为它开始于中世纪,这个中世纪是相对于计算机技术的产生和发展来说的。
在过去的时间里,Unix和它的子分支Linux收集有许多的历史和一些完全古老的语言。
在这篇技巧文章中,我们将介绍一少部分古老的语言和它们的目的和作用,以及它们真正的来源。
RC
在Linux中,最为常用的缩略语也许是“rc”,它是“runcomm”的缩写――即名词“run command”(运行命令)的简写。
今天,“rc”是任何脚本类文件的后缀,这些脚本通常在程序的启动阶段被调用,通常是Linux系统启动时。
如 /etc/rs是Linux启动的主脚本,而.bashrc是当Linux的bash shell启动后所运行的脚本。
.bashrc的前缀“.”是一个命名标准,它被设计用来在用户文件中隐藏那些用户指定的特殊文件;“ls”命令默认情况下不会列出此类文件,“rm”默认情况下也不会删除它们。
许多程序在启动时,都需要“rc”后缀的初始文件或配置文件,这对于Unix的文件系统视图来说,没有什么神秘的。
ETC
在“etc/bin”中的“etc”真正代表的是“etcetera”(附加物)。
在早期的Unix系统中,最为重要的目录是“bin”目录 (“bin”是“binaries”二进制文件――编译后的程序的缩写),“etc”中则包含琐碎的程序,如启动、关机和管理。
运行一个Linux必须的东西的列表是:
一个二进制程序,etcetera,etcetera――换句话说,是一个底层的重要项目,通常添加一些次等重要的零碎事物。
今天, “etc”包含了广泛的系统配置文件,这些配置文件几乎包含了系统配置的方方面面,同样非常重要。
Bin
今天,许多在Linux上运行的大型子系统,如GNOME或Oracle,所编译成的程序使用它们自己的“bin”目录(或者是 /usr/bin,或者是/usr/local/bin)作为标准的存放地。
同样,现在也能够在这些目录看到脚本文件,因为“bin”目录通常添加到用户的PATH路径中,这样他们才能够正常的使用程序。
因此运行脚本通常在bin中运行良好。
TTY
在Linux中,TTY也许是跟终端有关系的最为混乱的术语。
TTY是TeleTYpe的一个老缩写。
Teletypes,或者 teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,和古老的电报机区别并不是很大。
之后,当计算机只能以批处理方式运行时(当时穿孔卡片阅读器是唯一一种使程序载入运行的方式),电传打字机成为唯一能够被使用的“实时”输入/输出设备。
最终,电传打字机被键盘和显示器终端所取代,但在终端或 TTY接插的地方,操作系统仍然需要一个程序来监视串行端口。
一个getty“Get TTY”的处理过程是:
一个程序监视物理的TTY/终端接口。
对一个虚拟网络沮丧服务器(VNC)来说,一个伪装的TTY(Pseudo-TTY,即家猫的TTY,也叫做“PTY”)是等价的终端。
当你运行一个xterm(终端仿真程序)或GNOME终端程序时,PTY对虚拟的用户或者如xterm一样的伪终端来说,就像是一个TTY在运行。
“Pseudo”的意思是“duplicating in a fake way”(用伪造的方法复制),它相比“virtual”或“emulated”更能真实的说明问题。
而在现在的计算中,它却处于被放弃的阶段。
Dev
从TTY留下的命令有“stty”,是“set tty”(设置TTY)的缩写,它能够生成一个配置文件/etc/initab(“initialization table”,初始表),以配置gettys使用哪一个串口。
在现代,直接附加在Linux窗口上的唯一终端通常是控制台,由于它是特殊的TTY,因此被命名为“console”。
当然,一旦你启动X11,“console”TTY就会消失,再也不能使用串口协议。
所有的TTY都被储存在“/dev”目录,它是“[physical] devices”([物理]设备)的缩写。
以前,你必须在电脑后面的串口中接入一个新的终端时,手工修改和配置每一个设备文件。
现在,Linux(和 Unix)在安装过程中就在此目录中创建了它所能向导的每一个设备的文件。
这就是说,你很少需要自己创建它。
随着硬件在电脑中的移出移进,这些名字将变得更加模糊不清。
幸运的是,今天在Linux上的高等级软件块对历史和硬件使用容易理解的名字。
举例来说,嗯,Pango(http:
//www.pango.org/)就是其中之一。
如果你对这些内容很感兴趣,那么我建议你阅读宏大的,但有些以美国英语历史为中心的,由Eric S. Raymond撰写的Jargon File。
它并没有解释所有在Unix中使用的术语,但是它给出了这些形成的大致情况。
6关于shell自动telnet脚本问题
小弟想通过shell脚本登陆到多台主机去查看文件系统是否超过90%,以达到监控的目的,脚本如下:
——--------------------------
#!
/bin/ksh
(sleep1;echofit;
sleep1;echofit001;
sleep2;echodf-k|awk'{if(NR%4==0&&$1>50)print$1}';
sleep2;echoexit;
sleep1;)|telnet192.1.1.0
-----------------------------
但是发现不能达到目的,貌似telnet不能满足管道,但是aix下没有expect;
在论坛上找到前辈的代码,我改了以下:
cd/test
ip="127.0.0.1"
usr="alfred"
pas="alfred"
com1="df-k"?
inputfile=in #导入文件管道用的,不要改,这个值没有任何关系
outputfile=out.log #最终导出的文件
rm-fr$inputfile
rm-fr$outputfile
mknod$inputfilep
touch$outputfile
exec7$outputfile
exec8$inputfile
telnet$ip&7&
sleep2;echo$usr>>$inputfile
sleep2;echo$pas>>$inputfile
sleep2;echo$com1>>$inputfile
在以上脚本执行的时候,日志文件能记录下结果,但是却会在该脚本调用的地方报错:
getwinsize:
ioctl:
Aspecifiedfiledoesnotsupporttheioctlsystemcall.
sh-x后,发现是telnet$ip&7&造成的?
不知道是啥原因!
[ 本帖最后由alfred1980于2009-5-422:
24编辑 ]
7编写telnet脚本的问题
现在有一台服务器192.168.10.248开放了指定端口10001,当手工用telnet发送数据时可以接收到,比如
telnet192.168.10.24810001
aahava_new_conf #发送的数据,服务器屏幕有显示结果
Connectionclosedbyforeignhost.
我现在想写一个自动的telnet脚本,完成上面的功能。
试了两种办法,均不行,请大家看看应该如何修改?
#第一个脚本,仿照
#!
/bin/bash
data=`cattest.txt`
tempinput=in
rm-fr$tempinput
mknod$tempinputp
exec7<>$tempinput
telnet192.168.10.24810001<&7
sleep1;echo'aahave_new_conf'>>$tempinput
#第二个脚本,仿照
#!
/bin/bash
telnet192.168.10.24810001<
aahave_new_conf
!
IAMTOP1982
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 如何在 telnet 上Linux主机后执行命令 如何 Linux 主机 执行 命令