客户端代码,监听端口号为 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客户端的更多相关文章

  1. 大聊Python----通过Socket实现简单的ssh客户端

    光只是简单的发消息.收消息没意思,干点正事,可以做一个极简版的ssh,就是客户端连接上服务器后,让服务器执行命令,并返回结果给客户端. #ssh_client.py import socket cli ...

  2. 运用socket实现简单的服务器客户端交互

    Socket解释: 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. Socket的英文原义是“孔”或“插座”.作为BSD UNIX的进程通信机制,取后一种意 ...

  3. python socket之tcp服务器与客户端demo

    python socket之tcp服务器与客户端demo 作者:vpoet mails:vpoet_sir@163.com server: # -*- coding: cp936 -*- ''' 建立 ...

  4. 运用socket实现简单的ssh功能

    在python socket知识点中已经对socket进行了初步的了解,那现在就使用这些知识来实现一个简单的ssh(Secure Shell)功能. 首先同样是建立两个端(服务器端和客户端) 需求是: ...

  5. Socket创建简单服务器和客户端程序

    使用Socket编程创建简单服务器和客户端 要知道的 Socket-AddressFamily, SocketType, ProtocolType https://blog.csdn.net/weix ...

  6. python socket 编程简单入门

    想讲讲套接字的概念 套接字,即英文socket的中文意译,起源于20世纪70年代,是加利福利亚大学的伯克利版本UNIX(称为BSD UNIX)的一部分.目的是实现主机上运行的一个程序与另一个运行的程序 ...

  7. python socket和简单tcp通信实现

    python 服务端和客户端的简单交互 TCP服务端: 1 创建套接字,绑定套接字到本地IP与端口 s = socket.socket(socket.AF_INET,socket.SOCK_STREA ...

  8. Python Socket实现简单的聊天室

    通过参考其他牛人的文章和代码,  再根据自己的理解总结得出,  说明已经加在注释中, FYI 主要参考文章: http://blog.csdn.net/dk_zhe/article/details/3 ...

  9. Python Socket实现简单web服务器

    #!/usr/bin/python env # coding:utf-8 import socket ip_port = ('127.0.0.1', 80) back_log = 10 buffer_ ...

随机推荐

  1. Oracle物化视图详解

    现实工作中会有多个数据源同步到一个数据库完成数据分析的场景,这些数据可以不是实时同步的,我们一般通过定时任务抽取数据到统计分析库给应用使用. 一般的同步方式可以通过时间戳做全量和增量数据同步(存在原数 ...

  2. IE浏览器 div或者其他容器的height属性无效 滚动条问题解决办法

    1.height设置定值是功能好使的  但是如果在不同分辨率的电脑上运行程序 会出现样式上的偏差 2.height的百分比是根据父级来的  所以将父级的height设置好(如果当前容器上方有很多父级 ...

  3. MyEclipse中关于JRE System Library、Web App Libraries的疑惑

    简要说明一下:其实,这三个都是jar包的存放集合. 1.JRE System Library主要存放J2SE的标准jar,一般不需要调整. 2.Referenced Libraries是存放第三方的j ...

  4. 看了xici有写给孩子的信,maybe我也要写给孩子一些东西了

    看了xici有写给孩子的信,maybe我也要写给孩子一些东西了

  5. ADF中VO的查询方法比较

    getRowCount(),getQueryHitCount(oracle.jbo.server.ViewRowSetImpl),getEstimatedRangePageCount,getCappe ...

  6. Url快捷方式转超链接页

    效果:(打了码  可以感受到效果) 问题: 近期发现了之前的一些网页快捷方式文件有50个  查看起来实在不方便 解决: 目前想到了两种 (书签法) (类书签法) 第一种简单快速 (当然有掌握写技巧) ...

  7. C# 文件流FileStream 实现多媒体文件复制 StreamReader StreamWriter 读取写入文本

    #region 实现多媒体文件的复制 string source = @"F:\123\source.avi";//源文件路径 string target = @"F:\ ...

  8. ssm分页

    pom.xml配置文件中增加相关的插件. <dependency> <groupId>com.github.pagehelper</groupId> <art ...

  9. PAT——1001 害死人不偿命的(3n+1)猜想 (15)

    对给定的任一不超过1000的正整数n,简单地数一下,需要多少步(砍几下)才能得到n=1? 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值. 输出格式:输出从n计算到1需要的步数. 输入样例 ...

  10. 多python版本下,使用pip安装第三方库

    说明:win10系统,先安装有Python3.5.2,后又安装了Python2.7.13(并重命名了Python27文件夹下python.exe为python2.7.13.exe),试图使用pip安装 ...