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
