python_day socket 交互模拟ssh

服务端

import socketimport subprocessserver=socket.socket(socket.AF_INET,socket.SOCK_STREAM)server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)server.bind((‘127.0.0.1‘,80))server.listen(5)while True:    conn,address=server.accept()    while True:        try:            data=conn.recv(1024)            if not data:break            print(data)            res=subprocess.Popen(data.decode(‘utf-8‘),shell=True,                             stdout=subprocess.PIPE,                             stderr=subprocess.PIPE)            err=res.stderr.read()            if err:                msg=err            else:                msg=res.stdout.read()            conn.send(msg)        except Exception:            break    conn.close()server.close()

客户端
import socketclient=socket.socket(socket.AF_INET,socket.SOCK_STREAM)client.connect((‘127.0.0.1‘,80))

while True:    inp=input(‘cmd>>:‘).strip()    if not inp:continue    client.send(inp.encode(‘utf-8‘))    data=client.recv(1024)    print(data.decode(‘gbk‘))client.close()
				
时间: 2024-10-13 05:20:10

python_day socket 交互模拟ssh的相关文章

Python 简单socket模拟ssh

OSI七层模型(Open System Interconnection,开放式系统互联) 应用层 网络进程访问应用层: 为应用程序进程(例如:电子邮件.文件传输和终端仿真)提供网络服务: 提供用户身份验证 表示层 数据表示: 确保接收系统可以读出该数据: 格式化数据: 构建数据: 协商用于应用层的数据传输语法: 提供加密 回话层 主机间通信: 建立.管理和终止在应用程序之间的会话 传输层 传输问题: 确保数据传输的可靠性: 建立.维护和终止虚拟电路: 通过错误检测和恢复: 信息流控制来保证可靠性

模拟ssh、黏包、hashlib模块

一.模拟ssh 1.subprocess模块 subprocess模块是python从2.4版本开始引入的模块.主要用来取代 一些旧的模块方法,如os.system.os.spawn*.os.popen*.commands.*等.subprocess模块可用于产生进程,并连接到进程的输入/输出/错误输出管道,并获取进程的返回值. import subprocess res = subprocess.Popen("dir", shell=True, stderr=subprocess.P

osgi实战学习之路:5.生命周期及利用命令、装饰者模式实现基于socket交互Bundle命令demo

生命周期中关键3个类: BundleActivator 入口点,类似main方法 BundleContext Bundle上下文对象,在运行期间,为应用程序提供操作osgi框架的方法 Bundle 代表一个已安装的Bundle 接口说明: BundleActivator: public interface BundleActivator { public void start(BundleContext context) throws Exception; public void stop(Bu

shell脚本实现无密码交互的SSH自动登陆

ssh连接远程主机时候询问密码,跟su.sudo命令的默认行为一样,是不从stdin读入数据的,据称是为安全考虑,但是有时候在脚本当中确实需要无人守值的登陆.搜索一下不难找到类似的例子,使用expect来完成密码应答: #!/bin/bash auto_login_ssh () { expect -c "set timeout -1; spawn -noecho ssh -o StrictHostKeyChecking=no $2 ${@:3}; expect *assword:*; send

使用PHP Socket 编程模拟Http post和get请求

这里给大家分享一段使用PHP Socket 编程模拟Http post和get请求的代码,非常的实用,结尾部分我们再讨论下php模拟http请求的几种方法. <?php /** * 使用PHP Socket 编程模拟Http post和get请求 * @author koma */ class Http{ private $sp = "\r\n"; //这里必须要写成双引号 private $protocol = 'HTTP/1.1'; private $requestLine

【学习笔记】Python网络编程(三)利用socket模拟ssh协议

上代码,server端: import socket,os s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) host = '' port = 1051 s.bind((host,port)) s.listen(4) while 1:     conn,addr = s.accept()     while 1:         data = conn.recv(1024)         if not data:break        

【学习笔记】Python网络编程(四)完善socket模拟ssh协议

server端代码: import socket,commands host =  '' port = 1053 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind((host,port)) s.listen(1) while 1:     conn,addr = s.accept()     while 1:         data = conn.recv(1024)         cc,bb = commands.get

socket编程模拟linux下的ssh代码实现

实现思路: 1.提供输入指令的客户端: 2.提供返回执行指令结果的服务端 3.寻找服务端返回结果一次无法全部接收的解决思路 服务端代码(ssh_server.py) 1 #coding=utf-8 2 import socket,os 3 4 server = socket.socket() 5 server.bind(('localhost', 9999)) 6 server.listen() 7 client,addr = server.accept() 8 while True: 9 da

[Python Study Notes] Socket模拟ssh并记录遇到的问题

服务器端: 流程: 1.创建servert实例 2.绑定地址和端口 3.开始监听 4.创建客户端连接实例 5.等待客户端的消息 6.......... 1 # The_author = 'liu66' 2 # By python3.x 3 # -*- coding = utf-8 -*- 4 5 6 import socket,os 7 8 server=socket.socket() 9 server.bind(("localhost",66))#绑定要监听的端口 10 server