高难度的问题,请求高手解答!!!

zhangjingyuhua 2008-07-16 09:25:26
client通过ssh协议连接到SVR端,然后svr端连续的发送命令到client。
client怎么才能控制一条命令执行成功后。再执行下一条命令.
其中SSH协议是一个daemon程序控制。逻辑结构是这样的:
client通过socket发送SSH user@10.2.1.10 ;此时daemon程序通过socket
接收SSH 的连接命令发送给SVR端。然后client连续发送命令给damon程序。
此时问题:
由于连续发送命令,SVR端响应的速度没有client快。出现命令与结果不一致。
怎么能控制一条命令执行完毕,再执行下一条命令?用python语言实现,最好有例子。
...全文
84 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Semigod 2008-07-17
  • 打赏
  • 举报
回复
单独弄个命令队列,来了命令往里一放就不用管了,另起线程处理命令
maplele20 2008-07-17
  • 打赏
  • 举报
回复
你可以参考一下下面的代码:

#!/usr/bin/env python
##Server.py

import socket
host = '' # Bind to all interfaces
port = 51423

cmds = ['cmd', 'list', 'dir']

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port))
s.listen(5)
print "Server is running on port %d; press Ctrl-C to terminate." % port
clientsock, clientaddr = s.accept()

while 1:
clientfile = clientsock.makefile('rw', 0)
for cmd in cmds:
cmd += '\n'
print cmd, len(cmd)
clientfile.write(cmd)
break
clientfile.close()
clientsock.close()
s.close()

#!/usr/bin/env python
##Client.py

import socket, sys
port = 51423
host = '127.0.0.1'

buffer = []

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
fd = s.makefile('rw', 0)
for cmd in fd.readlines():
buffer.append(cmd.strip())

print buffer
s.close()


iambic 2008-07-16
  • 打赏
  • 举报
回复
在下条命令返回前禁止input?估计这个需要UI库的支持。

37,735

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧