python socket 实现远程执行命令 上传 下载文件
2013-07-19 18:20
1301 查看
client端:
本文出自 “四叶草的空间” 博客,请务必保留此出处http://wsq68.blog.51cto.com/2394336/1252842
#!/usr/bin/env python import socket,time,os import rlcompleter h,p="192.168.220.130",12346 sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM) sock.connect((h,p)) def runcmd(): received=sock.recv(8192) if received=="changed directoy successful": print "changed directoy successful" else: print received def putfile(filename): print "\033[32;1mstart send %s\033[0m" %filename f=open(filename,'rb') while 1: f_data=f.read(4096) if not f_data:break sock.sendall(f_data) f.close() time.sleep(0.5) sock.sendall("completed") print "send %s completed" %filename def getfile(filename): print "\033[32;1mstart get %s\033[0m" %filename os.chdir(dir) f=open(filename,'wb') while 1: data=sock.recv(8192) if not data:break if data=="completed": time.sleep(0.5) print "%s have get complete" %filename break f.write(data) f.close() while 1: try: cmd=raw_input("\033[32;1mPlease input will run command: \033[0m") sock.sendall(cmd) action=sock.recv(4096) if action=="Has ready" and cmd.split()[0]=="put": global dir dir,filename=os.path.split(cmd.split()[1]) os.chdir(dir) putfile(filename) elif action=="Has ready" and cmd.split()[0]=="get": dir,filename=os.path.split(cmd.split()[1]) getfile(filename) # action=="Has ready" and cmd.split()[0] != "get" and cmd.split()[0] != "put": else: runcmd() except KeyboardInterrupt: print "\n\033[31;1mbye bye!\033[0m" break sock.close()server端:
#!/usr/bin/python #coding=utf-8 import SocketServer import os,time class myserver(SocketServer.BaseRequestHandler): def runcmd(self,comm): print "\033[33;1mwill run %s on %s\033[0m" %(comm,self.client_address[0]) self.request.sendall("Has ready") if comm.split()[0]=="cd": os.chdir(comm.split()[1]) self.request.sendall("changed directoy successful") else: cmd=os.popen(comm) result=cmd.read() result_data="\n\033[35;1mFeedback from Server \n\033[0m" + result self.request.sendall(result_data) def handle(self): print "\033[32;1m connected from %s\033[0m" %self.client_address[0] while 1: # print "\033[32;1m connected from %s\033[0m" %self.client_address[0] try: data=self.request.recv(4096) # filepath=data.split()[1] # dir=('/').join(filepath.split('/')[:-1]) if data.split()[0]=="put": global dir dir,filename=os.path.split(data.split()[1]) self.recvfile(filename) elif data.split()[0]=="get": dir,filename=os.path.split(data.split()[1]) self.sendfile(filename) else: self.runcmd(data) except IndexError: print "exit", self.client_address break def recvfile(self,filename): print "\033[32;1mstart receive %s...\033[0m" %filename self.request.sendall("Has ready") os.chdir(dir) f=open(filename,'wb') while 1: data=self.request.recv(4096) if not data:break if data=="completed": print "%s have received complete" %filename break f.write(data) f.close() def sendfile(self,filename): print "\033[32;1mstart send %s...\033[0m" %filename os.chdir(dir) f=open(filename,'rb') self.request.sendall("Has ready") time.sleep(0.5) while 1: f_data=f.read(8192) if not f_data:break self.request.sendall(f_data) f.close() time.sleep(0.5) self.request.sendall("completed") print "send %s completed" %filename if __name__=="__main__": h,p='',12346 server=SocketServer.ThreadingTCPServer((h,p),myserver) server.serve_forever() server.shutdown()运行截图:
本文出自 “四叶草的空间” 博客,请务必保留此出处http://wsq68.blog.51cto.com/2394336/1252842
相关文章推荐
- python paramiko实现多线程远程执行命令、多线程远程上传文件、多线程远程下载文件
- python paramiko实现多线程远程执行命令、多线程远程上传文件、多线程远程下载文件
- Python paramiko模块 实现 ssh远程执行命令 上传下载文件 堡垒机模式下的远程命令执行
- python写的批量操作远程主机脚本(命令执行,上传、下载文件)
- python模块学习之paramiko远程执行命令,文件上传、下载
- python写的批量操作远程主机脚本(命令执行,上传、下载文件)
- 如何使用 paramiko 模块来实现远程执行OS命令和文件上传下载?
- python写的批量操作远程主机脚本(命令执行,上传、下载文件)
- python写的批量操作远程主机脚本(命令执行,上传、下载文件)
- python写的批量操作远程主机脚本(命令执行,上传、下载文件)
- python写的批量操作远程主机脚本(命令执行,上传、下载文件)
- python模块学习之paramiko远程执行命令,文件上传、下载
- 利用python fabric模块写的批量操作远程主机脚本(命令执行,上传、下载文件)
- python模块paramiko实现上传下载与远程执行命令的代码
- linux下远程服务器批量执行命令及SFTP上传文件 -- python实现
- python写的批量操作远程主机脚本(命令执行,上传、下载文件)
- python使用paramiko模块实现ssh远程命令执行,与sftp文件下载功能
- Python远程登录Linux操作系统,执行命令、创建目录、上传及下载文件
- Python远程登录Linux操作系统,执行命令、创建目录、上传及下载文件
- python模块paramiko的上传下载和远程执行命令方法