python 通过socket实现ssh功能
功能:实现从客户端向服务端发送cmd指令,服务端将结果返回给客户端的功能。
#coding:utf-8
'''服务端'''
import socket,os
server=socket.socket() #创建对象
server.bind(('localhost',2345)) #绑定监听端口(服务器端的IP地址和端口)
server.listen(5) #开始监听TCP传入连接,5指定在拒绝连接之前,操作系统可以挂起的最大连接数量(tcp连接队列的大小,即连接数)
while True:
print'传输数据过来吧。。。'
conn,addr=server.accept() #与客户端建立连接
while True:
print '开始接受数据'
data=conn.recv(1024) #一次允许接受的数据大小
print '数据是:%s'%data
if len(data)==0:
print '没有传数据'
break
data_po=os.popen(data).read() #将命令结果读到data_po中
print '输出内容长度:',len(data_po)
print data_po
print type(data_po)
if len(data_po)==0:
data_po= '输入的命令有误! '
conn.send(str(len(data_po))) #发送总数据的大小给客户端,send里面必须是str类型。
conn.send(data_po)
print isinstance(data_po, unicode) #发送数据给客户端,客户端收到多少数据,取决于它设定可以接受数据的大小。
server.close() #关闭服务端
#coding:utf-8
'''客户端'''
import socket
client=socket.socket()
client.connect(('localhost',2345)) #连接端的IP地址和端口号(这里写的是服务端的IP地址和端口号)
a=0 #统计接受数据的总大小
while True:
data_cl=raw_input('>>:').strip() #输入
if len(data_cl)==0: #不能输入回车、空格字符
print '输入错误,请重新输入'
continue
client.send(data_cl) #发送输入的指令
data_lp=client.recv(1024) #接受服务端数据的大小
while a<=data_lp: #如果接受数 据比总量小,将继续接受,直到接受数的大小大于总量大小
data=client.recv(1024) #一次允许接受的数据大小,通过while循环可以多少实现接受信息量比较大的数据。
a=a+len(data)
print '输出数据长度:',a
print data
data_cl=raw_input('>>:').strip() #输入
client.close() #关闭客户端
python 通过socket实现ssh功能的更多相关文章
- (转)python通过paramiko实现,ssh功能
python通过paramiko实现,ssh功能 1 import paramiko 2 3 ssh =paramiko.SSHClient()#创建一个SSH连接对象 4 ssh.set_missi ...
- python之socket-ssh实例
本文转载自大王http://www.cnblogs.com/alex3714/articles/5830365.html 加有自己的注释,应该会比原文更突出重点些 一. 基本Socket实例 前面讲了 ...
- Python 简单socket模拟ssh
OSI七层模型(Open System Interconnection,开放式系统互联) 应用层 表示层 回话层 传输层 tcp,udp 网络层 ip,icmp 数据链路层 mac地址 物理层 物理网 ...
- Python之Socket&异常处理
Socket Socket用于描述IP地址和端口号,每个应用程序都是通过它来进行网络请求或者网络应答. socket模块和file模块有相似之处,file主要对某个文件进行打开.读写.关闭操作.soc ...
- python通过socket实现多个连接并实现ssh功能详解
python通过socket实现多个连接并实现ssh功能详解 一.前言 上一篇中我们已经知道了客户端通过socket来连接服务端,进行了一次数据传输,那如何实现客户端多次发生数据?而服务端接受多个客户 ...
- 运用socket实现简单的ssh功能
在python socket知识点中已经对socket进行了初步的了解,那现在就使用这些知识来实现一个简单的ssh(Secure Shell)功能. 首先同样是建立两个端(服务器端和客户端) 需求是: ...
- 通过socket实现多个连接并实现ssh功能
一.前言 上一篇中我们已经知道了客户端通过socket来连接服务端,进行了一次数据传输,那如何实现客户端多次发生数据?而服务端接受多个客户端呢? 二.发送中文信息 在python3中,socket只能 ...
- Python基于socket模块实现UDP通信功能示例
Python基于socket模块实现UDP通信功能示例 本文实例讲述了Python基于socket模块实现UDP通信功能.分享给大家供大家参考,具体如下: 一 代码 1.接收端 import ...
- python之Socket网络编程
什么是网络? 网络是由节点和连线构成,表示诸多对象及其相互联系.在数学上,网络是一种图,一般认为专指加权图.网络除了数学定义外,还有具体的物理含义,即网络是从某种相同类型的实际问题中抽象出来的模型.在 ...
随机推荐
- Mariadb-10.2.25 多实例
Mariadb-10.2.25 多实例 定义目录 mkdir -p /mysql/{3306,3307,3308}/{bin,data,etc,log,pid,socket} 生成数据库文件 /app ...
- 循环队列--忘记分配空间和如何用tag判断队空队满
#include<iostream> #define maxsize 100 using namespace std; struct CLqueue { int *Q; int front ...
- 第五章——Pytorch中常用的工具
2018年07月07日 17:30:40 __矮油不错哟 阅读数:221 1. 数据处理 数据加载 ImageFolder DataLoader加载数据 sampler:采样模块 1. 数据处理 ...
- Maven--远程仓库的认证
大部分远程仓库无须认证就可以访问,但有时候出于安全方面的考虑,我们需要提供认证信息才能访问一些远程仓库. 配置认证信息和配置仓库信息不同,仓库信息可以直接配置在 POM 文件中,但是认证信息必须配置在 ...
- Linux bootloader
1.bootloader:初始化相关的硬件 loader:将操作系统从硬盘当中拷贝到内存当中去,,然后让CPU跳转到内存中执行操作系统. 2.boot阶段:(1)关闭影响cpu正常执行的外设 比 ...
- 四十、LAMP与LNMP加速与缓存优化进阶实战上部
实例: 一. 所有服务器配置定时时间同步,必须通过web server上网. 有两种方式: 1.服务器A能进行上网,作为web server ,通过指定为ntp服务器,所有服务器访问这个服务器 2.服 ...
- Fabric不支持对同一个数据的并发事务处理
Fabric不支持对同一个数据的并发事务处理,也就是说, 如果我们同时运行了invoke(一),invoke(二),那么只会第一条Transaction成功, 而第二条失败.因为在Committer节 ...
- SpringMVC访问出错No converter found for return value of type
在使用SSM整合的时候,spring mvc 添加@ResponseBody的时候,正常情况下都会返回json的.但是又的时候如果没有配置好的话,如果想要返回Map的json对象会报:No conve ...
- [ZJOI2019]麻将(DP+有限状态自动机)
首先只需要考虑每种牌出现的张数即可,然后判断一副牌是否能胡,可以DP一下,令f[i][j][k][0/1]表示到了第i位,用j次i-1,i,i+1和k次i,i+1,i+2,是否出现对子然后最大的面子数 ...
- 新年在家学java之基础篇--循环&数组
因为“野味肺炎”的肆虐,过年被迫宅家只能吃了睡.睡了吃.这么下次只能长膘脑子空空,不如趁此机会重新学习java基础,为日后做铺垫~ 循环结构: 几种循环:for(::),while(){},do{}w ...