【已解决】如何在 telnet 上Linux主机后远程执行主机上的shell脚本
本帖最后由 xiehuahere 于 2011-2-23 14:21 编辑如题。
我先用ftp将脚本放到主机上,然后如何远程执行呢?求教!
急啊,先谢过~~ 或者,如何获得telnet窗口的字符?
我参考了两篇官方的文章:
http://www.autoitscript.com/forum/topic/77269-autoit-can-get-prompt-in-cmd-window/page__p__565064__hl__telnet+execute+__fromsearch__1#entry565064
和
http://www.autoitscript.com/forum/topic/66115-hyperterminaltelnet-parsing/page__p__490506__hl__telnet+execute+__fromsearch__1#entry490506
后者可以,但有菜单选择界面闪过,比较难看。
前者,这个帖子没个结论啊。我也没试出来。有人接过去吗? linux谁还玩telnet 本帖最后由 xiehuahere 于 2011-2-22 13:20 编辑
从 Windows telnet 到 Linux,建立 主机 与 设备 的通信,这是典型的嵌入式测试环境。
我的问题代表了一类人的需求。
http://www.autoitscript.com/forum/topic/82393-telnet-in-background/page__p__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的一些环境变量是可继承的。
继续研究中。 linxu下的bash脚本如果要远程启动
可以使用plink 使用ssh远程控制 谢谢楼上的,我试试。
另外,这样也行:
TCPSend($socket, "/home/script.sh " & $param & @CRLF) ddddddddddddddddd抽空看看 看看,学习了 收藏了,非常好! 看看,学习了
页:
[1]