python-socket实现简单的ssh客户端
客户端代码,监听端口号为 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()
python-socket实现简单的ssh客户端的更多相关文章
- 大聊Python----通过Socket实现简单的ssh客户端
光只是简单的发消息.收消息没意思,干点正事,可以做一个极简版的ssh,就是客户端连接上服务器后,让服务器执行命令,并返回结果给客户端. #ssh_client.py import socket cli ...
- 运用socket实现简单的服务器客户端交互
Socket解释: 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. Socket的英文原义是“孔”或“插座”.作为BSD UNIX的进程通信机制,取后一种意 ...
- python socket之tcp服务器与客户端demo
python socket之tcp服务器与客户端demo 作者:vpoet mails:vpoet_sir@163.com server: # -*- coding: cp936 -*- ''' 建立 ...
- 运用socket实现简单的ssh功能
在python socket知识点中已经对socket进行了初步的了解,那现在就使用这些知识来实现一个简单的ssh(Secure Shell)功能. 首先同样是建立两个端(服务器端和客户端) 需求是: ...
- Socket创建简单服务器和客户端程序
使用Socket编程创建简单服务器和客户端 要知道的 Socket-AddressFamily, SocketType, ProtocolType https://blog.csdn.net/weix ...
- python socket 编程简单入门
想讲讲套接字的概念 套接字,即英文socket的中文意译,起源于20世纪70年代,是加利福利亚大学的伯克利版本UNIX(称为BSD UNIX)的一部分.目的是实现主机上运行的一个程序与另一个运行的程序 ...
- python socket和简单tcp通信实现
python 服务端和客户端的简单交互 TCP服务端: 1 创建套接字,绑定套接字到本地IP与端口 s = socket.socket(socket.AF_INET,socket.SOCK_STREA ...
- Python Socket实现简单的聊天室
通过参考其他牛人的文章和代码, 再根据自己的理解总结得出, 说明已经加在注释中, FYI 主要参考文章: http://blog.csdn.net/dk_zhe/article/details/3 ...
- Python Socket实现简单web服务器
#!/usr/bin/python env # coding:utf-8 import socket ip_port = ('127.0.0.1', 80) back_log = 10 buffer_ ...
随机推荐
- 【Python机器学习及实践】笔记
- Web博文目录
前言 博客写的多了,自己翻起来也费劲,这里就进行一下整合. 以前设想自己做DBA,做运维,没想到最后还要走开发这条路,干一行就爱一行...学的扎实点,工作起来也会轻松.—— 送给奋斗的自己 1 Jav ...
- ZT 骆家辉宣布辞职 他给中国带来什么留下什么?
骆家辉宣布辞职 他给中国带来什么留下什么? 字号|2013年11月20日 15:20 已有1933人阅读 57 导 读 美国驻华大使骆家辉20日上午发表声明,宣布辞职.骆家辉履任期间为中国 ...
- Json.Net 中Linq to JSON的操作
Linq to JSON是用来操作JSON对象的.可以用于快速查询,修改和创建JSON对象.当JSON对象内容比较复杂,而我们仅仅需要其中的一小部分数据时,可以考虑使用Linq to JSON来读取和 ...
- [原]零基础学习视频解码之FFMpeg中比较重要的函数以及数据结构
在正式开始解码练习前先了解下关于FFmpeg中比较重要的函数以及数据结构. 1. 数据结构: (1) AVFormatContext AVFormatContext是一个贯穿始终的数据结构,很多函 ...
- POJ-1061 青蛙的约会---扩展欧几里得算法
题目链接: https://cn.vjudge.net/problem/POJ-1061 题目大意: 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线 ...
- POJ-1284 Primitive Roots---原根&欧拉函数
题目链接: https://cn.vjudge.net/problem/POJ-1284 题目大意: 就是给出一个奇素数,求出他的原根的个数. 解题思路: 由于是m是奇素数,m的欧拉函数值为m - 1 ...
- iOS - CocoaPods 和 Carthage 的比较
CocoaPods 好处? 开发 iOS 项目不可避免地要使用第三方开源库,CocoaPods 的出现使得我们可以节省设置和更新第三方开源库的时间 在引入第三方库时它可以自动为我们完成各种各样的配置, ...
- 闲来无事,用javascript写了一个简单的轨迹动画
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 10、SpringBoot-CRUD登陆拦截
1.前端页面的设置 index.html <input type="text" class="form-control" name="usern ...