python

超轻量级php框架startmvc

python简易远程控制单线程版

更新时间:2020-06-06 22:36:01 作者:startmvc
本文实例为大家分享了python简易远程控制的具体代码,供大家参考,具体内容如下1.技术:

本文实例为大家分享了python简易远程控制的具体代码,供大家参考,具体内容如下

1. 技术:管道通信,流文件处理,socket基础

2. Tips:

默认IP:127.0.0.1

默认端口:7676

3. 代码样例:

服务端:


#!/usr/bin/env python 
# encoding: utf-8 
 
import socket 
import sys 
from os import * 
 
reload(sys) 
sys.setdefaultencoding("utf-8") 
 
def socketInit(): 
 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
 return s 
 
def socketDeal(s,HOST,PORT): 
 s.bind((HOST,PORT)) 
 s.listen(1) 
 
def ControlModule(sS,addr): 
 recv_buffer = sS.recv(20048) 
 if recv_buffer == "[-]Error:Server is OFF" or recv_buffer == "[*]Server is OFF": 
 print recv_buffer 
 sys.exit(0) 
 else: 
 print recv_buffer 
 send_buf = raw_input(addr[0]+">") 
 sS.send(send_buf) 
 
 
def main(): 
 HOST = "127.0.0.1" 
 PORT = 7676 
 s = socketInit() 
 socketDeal(s, HOST, PORT) 
 sS,addr = s.accept() 
 print "Connect from " + addr[0] + ":" + repr(addr[1]) 
 try: 
 while True: 
 ControlModule(sS,addr) 
 except Exception as e: 
 print "[-]Connect Error" 
 sS.close() 
 s.close() 
 sys.exit(-1) 
 except KeyboardInterrupt: 
 sS.close() 
 s.close() 
 sys.exit(0) 
 
if __name__ == '__main__': 
 main() 

受控端:


#!/usr/bin/env python 
# encoding: utf-8 
 
import socket 
import sys 
import re 
import traceback 
import tempfile 
from os import * 
from subprocess import * 
 
reload(sys) 
sys.setdefaultencoding("utf-8") 
 
def socketInit(): 
 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
 return s 
 
def socketConn(s,HOST,PORT): 
 while True: 
 try: 
 s.connect((HOST,PORT)) 
 except Exception as e: 
 continue 
 else: 
 s.send("Welcome Sir ~") 
 break 
 
 
def String_Deal(recv,send): 
 P_str = re.findall("cd(.*)|(\w):", recv) 
 if P_str!=[] and send == "": 
 if P_str[0][0]!="": 
 try: 
 chdir(P_str[0][0].strip()) 
 except Exception as e: 
 flag = -1 
 else: 
 flag = 1 
 else: 
 try: 
 chdir(recv) 
 except Exception as e: 
 #traceback.print_exc() 
 flag = -1 
 else: 
 flag = 1 
 else: 
 if send == "": 
 flag = 1 
 else: 
 flag = 0 
 return flag 
 
def OpenProcess(s): 
 try: 
 while True: 
 recv_buf = s.recv(2048) 
 #流文件技术,防止管道阻塞 
 out_temp = tempfile.SpooledTemporaryFile(bufsize=10*1000) 
 fileNo = out_temp.fileno() 
 cmd = Popen(recv_buf, shell=True,stdin=PIPE, stdout=fileNo, stderr=STDOUT) 
 cmd.wait() 
 out_temp.seek(0) 
 send_buf = out_temp.read() 
 #print len(send_buf) 
 #输入命令字符串处理识别 
 flag = String_Deal(recv_buf,send_buf) 
 if flag == 1: 
 s.send("OK") 
 elif flag == -1: 
 s.send("Error!!") 
 else: 
 s.send(send_buf) 
 send_buf = "" 
 except Exception as e: 
 try: 
 s.send("[-]Error:Server is OFF") 
 except Exception as e: 
 pass 
 s.close() 
 sys.exit(-1) 
 except KeyboardInterrupt: 
 try: 
 s.send("[*]Server is OFF") 
 except Exception as e: 
 pass 
 s.close() 
 sys.exit(0) 
def main(): 
 flag = 0 
 HOST = "127.0.0.1" 
 PORT = 7676 
 s = socketInit() 
 socketConn(s, HOST, PORT) 
 OpenProcess(s) 
 
 
if __name__ == '__main__': 
 main() 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python 远程控制