找回密码
 加入
搜索
查看: 4688|回复: 9

[网络通信] 【已解决】如何在 telnet 上Linux主机后远程执行主机上的shell脚本

  [复制链接]
发表于 2011-2-21 14:27:12 | 显示全部楼层 |阅读模式
本帖最后由 xiehuahere 于 2011-2-23 14:21 编辑

如题。
我先用ftp将脚本放到主机上,然后如何远程执行呢?求教!
急啊,先谢过~~
 楼主| 发表于 2011-2-21 15:54:11 | 显示全部楼层
或者,如何获得telnet窗口的字符?

我参考了两篇官方的文章:
http://www.autoitscript.com/foru ... arch__1#entry565064

http://www.autoitscript.com/foru ... arch__1#entry490506

后者可以,但有菜单选择界面闪过,比较难看。
前者,这个帖子没个结论啊。我也没试出来。有人接过去吗?
发表于 2011-2-21 17:14:02 | 显示全部楼层
linux谁还玩telnet
 楼主| 发表于 2011-2-22 09:50:34 | 显示全部楼层
本帖最后由 xiehuahere 于 2011-2-22 13:20 编辑

从 Windows telnet 到 Linux,建立 主机 与 设备 的通信,这是典型的嵌入式测试环境。
我的问题代表了一类人的需求。

http://www.autoitscript.com/foru ... _590023#entry590023
这个4楼的帖子具有相当的参考价值。又是一种方法。稍作修改和封装,如下:
;Using native socket connection to simulates a TELNET connection to communicate with Linux machine for sending commands and receiving info from it
$port = 23
$user = "root"
$passwd = "xxxxxx"

TCPStartup()
$socket = TCPConnect($host, $port)
If $socket = -1 Then
        MsgBox(48, "Error", "Connection fail!")
        Exit
EndIf

Sleep(300)
$ack = TCPRecv($socket, 150)
If StringInStr($ack, "login") > 0 Then
        TCPSend($socket, $user & @CRLF)
            Sleep(500)
            TCPSend($socket, $passwd & @CRLF)
Else
        MsgBox(48, "Error", "Cannot connect")
        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()

;================================================================================================
;        Function Definition
;================================================================================================
;Wait for desired command prompt character "#" before sending.
Func wait_cmd_prompt($sk)
        Local $ack
        Do
                $ack = StringStripWS(TCPRecv($sk, 300), 2)
                Sleep(300)
                ;MsgBox(0,"",$ack)
        Until StringRight($ack, 1) = "#"
        ;MsgBox(0,"","out of loop")
EndFunc
不过,我一楼发的问题还没得到解决。
运行设备端(Linux环境)的脚本(shell脚本)远比远程命令控制来得可靠,因为这样Linux的一些环境变量是可继承的。
继续研究中。
发表于 2011-2-22 19:51:57 | 显示全部楼层
linxu下的bash脚本如果要远程启动
可以使用plink 使用ssh远程控制
 楼主| 发表于 2011-2-23 12:11:12 | 显示全部楼层
谢谢楼上的,我试试。
另外,这样也行:
TCPSend($socket, "/home/script.sh " & $param & @CRLF)
发表于 2011-10-20 11:42:00 | 显示全部楼层
ddddddddddddddddd抽空看看
发表于 2013-5-7 19:33:34 | 显示全部楼层
看看,学习了
发表于 2014-11-14 12:56:25 | 显示全部楼层
收藏了,非常好!
发表于 2015-1-2 00:32:14 | 显示全部楼层
看看,学习了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-16 13:01 , Processed in 0.071458 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表