Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'BaiduLinkSeo_Plugin' does not have a method 'post' in /var/www/html/build/var/Typecho/Plugin.php on line 489
python制作shell连接脚本 - Miagz's blog

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

    学到了

发表评论