python制作shell连接脚本

由 Miagz 发布

shell连接脚本

看了些网上的教程,闲着没事,做了一个python的shell连接脚本
脚本分客户端与服务端
利用服务端来开启一个通道,然后使用客户端进行连接,这样就可以远程操控服务端的电脑了
服务端可以同时被5台电脑连接,如果想修改那么就到s_sock.listen(5)里修改数值,断开连接输入quit,程序就会断开与服务端的连接

常见问题

常见的问题就是端口被占用,如果服务端出现了端口被占用现象,请到脚本中修改Port变量,修改完之后也要同时修改客户端的Port,这样才能正常使用脚本

服务端

import socket
import os
Host=""
Port=1314
bufsize=8000
ipport=(Host,Port)
s_sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 创建 tcp 套接字
s_sock.bind(ipport)
s_sock.listen(5)
stop=False
while not stop:
    c_sock, caddr=s_sock.accept() # 接收连接者数据-堵塞式
    ip,port=caddr
    print("%s connection...."%(ip))
    while True:
        try:
            data=c_sock.recv(bufsize) # 接收数据
        except:
            c_sock.close()
            break
        stop=data.decode('utf-8')=="QUIT"
        if stop:
           break
        values=data.decode()
        value=os.popen(values) # 执行命令
        fh=os.system(values)
        if fh==0:
            value=value.read() # 读取返回值
            if not value:
                value="execution succeed"
        elif fh==32512:
            value="sh: %s: command not found"%(data.decode())
        c_sock.send(value.encode())
s_sock.close()
c_sock.close()

客户端

import socket
import os
Host=input("input server ip:")
if not Host:
    Host="127.0.0.1"
Port=1314
addr=(Host,Port)
c_sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
status=True
try:
     c_sock.connect(addr)
except:
    print("%s 拒绝了我们的连接"%(Host))
status=False
while status:
    value=input("[%s] Shell >"%(Host))
    if not value:
        continue
    try:
        c_sock.send(value.encode()) # 发送数据
        if value=="quit":
            break
        data=c_sock.recv(10000) # 接收返回的数据
        print("%s OS :\n"%(Host),data.decode())
     except:
        print("%s 断开了连接"%(Host))
        break
c_sock.close()

利用

开启服务端

使用客户端连接服务端


仅有一条评论

  1. admin123
    admin123 · 2020-03-28 19:20

    学到了

发表评论