摘要:
堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作。它的主要作用是做批量管理。 下载安装 SSHClient 功能:用于连接远程服务器并执行基本命令 远程连接验证方式分为两种: (1)基于用户名密码连接 (2)基于公钥秘钥连接 通 阅读全文
摘要:
功能概述 断言被用作你接下来的程序执行,如果后面程序依赖于前面的程序,后面的程序有很重要,就是后面的程序执行肯定不能出错,所以在执行之前要做检查工作。 解析:可以看到出现了断言错误报错,因为assert断言需要加上type判断类型,接着我们对代码进行修改: 再将str修改为int 解析:这里的断言主 阅读全文
摘要:
实验简述 在上一个模块,我们了解可以通过socket封装底层协议对服务器端和客户端之间进行收发消息,实现通信,那么我们可以做一个客户端连接上服务端后,让服务器执行命令,并返回结果给客户端。下面我们就来实现该功能 服务器端 客户端 执行过程 服务器端 客户端 通过以上在客户端上执行pwd命令后都能正常 阅读全文
摘要:
问题简述 在上一个在实现socketserver实验中,我们尝试打开多个客户端连接到sockerserver,但是从第2个客户端发起的会话开始,都处于挂起状态,无法实现多用户多并发,那么,我们如何实现多并发呢? 并不是socketserver不支持多并发,而是到现在为止,还没有加入多并发的功能,上面 阅读全文
摘要:
问题概述 服务器端发送数据到客户端,如果服务器端发送的数据大于客户端一次接收的数据(客户端默认一次接收的大小为1024B,最大支持8192B),如果服务器端发送的数据大于8K,那么根据之前的解决思路,我们只能通过服务器端先计算发送数据的大小,然后再发送数据到客户端,而客户端可以根据服务器端发来的数据 阅读全文
摘要:
问题概述 之前我们通过在服务器端发送数据到客户端之前,先计算发送数据的大小,再发送给客户端,而客户端可以根据服务器端发来的数据总大小,进行多次循环接收,直到全部接收完成。到这里程序运行似乎没什么问题,但是我们在代码运行测试的过程中,也会看到类似以下的问题。 服务器端 客户端 执行过程 服务器端 客户 阅读全文
摘要:
20 阅读全文
摘要:
简述 客户端发送指令到服务端要下载文件,这时候服务器在发送文件给客户端之前的检查步骤有哪些? 服务器端检查流程 代码实现 服务器端 思路:解析命令=>检测文件是否存在=>打开文件=>检测文件大小=>发送文件大小给客户端=>等待客户端的确认信息=>开始边读边发 客户端 思路:判断命令是否是下载动作=> 阅读全文
摘要:
问题简述 上一节在使用socket实现文件发送时,因为服务器端代码中有连续2次的发送,造成服务器端发送数据粘包问题,我们可以提供另一种思路:假设客户端知道自己要接收5M的数据,那么在客户端循环接收服务器端发来的数据时,只接收5M的数据,因为此代码中连续的2次发送,客户端每次默认接收1024,且当接收 阅读全文
摘要:
概述 我们之前所学的socket都是一个人上传和下载文件,它不支持多用户,多并发同时处理,所以就出现了SocketServer,它产生的原因就是能够实现并发处理。 SocketServer模块简化了编写SocketServer的任务 SocketServer的四种类 TCPServer 说明:使用I 阅读全文
摘要:
定义 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能)本质就是.py结尾的python文件(文件名:test.py,模块名:test) 包(Package):用来从逻辑上组织模块的,本质就是一个目录(必须带有一个__init__.py文件) 导入方法 导入一个模块:imp 阅读全文