如何在 telnet 上Linux主机后执行命令.docx

上传人:b****7 文档编号:10995589 上传时间:2023-02-24 格式:DOCX 页数:32 大小:33.68KB
下载 相关 举报
如何在 telnet 上Linux主机后执行命令.docx_第1页
第1页 / 共32页
如何在 telnet 上Linux主机后执行命令.docx_第2页
第2页 / 共32页
如何在 telnet 上Linux主机后执行命令.docx_第3页
第3页 / 共32页
如何在 telnet 上Linux主机后执行命令.docx_第4页
第4页 / 共32页
如何在 telnet 上Linux主机后执行命令.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

如何在 telnet 上Linux主机后执行命令.docx

《如何在 telnet 上Linux主机后执行命令.docx》由会员分享,可在线阅读,更多相关《如何在 telnet 上Linux主机后执行命令.docx(32页珍藏版)》请在冰豆网上搜索。

如何在 telnet 上Linux主机后执行命令.docx

如何在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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1