python-socket实现简单的ssh客户端
2018-06-25 05:54:21来源:博客园 阅读 ()
客户端代码,监听端口号为 localhost 9999
#!/usr/local/bin/python3 # -*- coding:utf-8 -*- import socket client = socket.socket() client.connect(('localhost', 9999)) while True: cmd = input(">>:").strip() if len(cmd) == 0: continue client.send(cmd.encode("utf-8")) cmd_res_size = client.recv(1024) # 接收命令结果的长度 print("命令结果大小:", cmd_res_size.decode()) # 防止粘包-装逼方法 client.send("接收成功".encode("utf-8")) # print(cmd_res) received_size = 0 while received_size < int(cmd_res_size.decode()): data = client.recv(1024) received_size += len(data) print(data.decode()) print("-----%s-----" % len(data)) else: print("received done...", cmd_res_size.decode()) client.close()
服务器端代码
#!/usr/local/bin/python3 # -*- coding:utf-8 -*- import socket, os, time server = socket.socket() server.bind(('localhost', 9999)) server.listen() while True: conn, addr = server.accept() print("new conn:", addr) while True: data = conn.recv(1024) if not data: print("客户端断开连接") break print("执行指令:", data) cmd_res = os.popen(data.decode()).read() conn.send(str(len(cmd_res)).encode("utf-8")) # 先发大小给客户端 # 防止粘包-low的方法 # time.sleep(0.5) # 强制缓冲区超时,防止粘包 # 防止粘包-装逼方法 # 在两次send中间强制进行一次收发,这样就能有效防止粘包 ack = conn.recv(1024) print(">>>>>:", ack.decode()) tmp = conn.send(cmd_res.encode("utf-8")) print(">>>>>: 发送成功") server.close()
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python day2-爬虫实现github登录 2019-08-13
- python爬虫学习之用Python抢火车票的简单小程序 2019-08-13
- 用python写一个简单的文件上传 2019-07-24
- python+selenium实现自动化百度搜索关键词 2019-07-24
- python + pyinstaller 实现将python程序打包成exe文件直接运 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash