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网络编程
什么是网络? 网络是由节点和连线构成,表示诸多对象及其相互联系.在数学上,网络是一种图,一般认为专指加权图.网络除了数学定义外,还有具体的物理含义,即网络是从某种相同类型的实际问题中抽象出来的模型.在 ...
随机推荐
- UML-操作契约总结
1.操作契约属于什么? 属于用例模型 如图: 2.操作契约在那个阶段引入? 在细化阶段,并非初始阶段. 3.哪些需要写操作契约? 1).最复杂的系统操作 2).最微妙的系统操作
- day67-CSS字体属性、文字属性、背景属性、css盒子模型
1. 字体属性 1.1 文字字体:font-family可以把多个字体名称作为一个“回退”系统来保存.如果浏览器不支持第一个字体,则会尝试下一个.浏览器会使用它可识别的第一个值. * {font-fa ...
- ZJNU 1531 - 丢手绢--中级
可以将相同的人数分块存在数组gp中先 例如RRGGGRBBBBRR 则gp[1~5]={2,3,1,4,2} 首先可以知道,如果要让没有相邻的相同,只需要每个gp[i]/2向下取整即可得出最少需要改变 ...
- 刷题34. Find First and Last Position of Element in Sorted Array
一.题目说明 题目是34. Find First and Last Position of Element in Sorted Array,查找一个给定值的起止位置,时间复杂度要求是Olog(n).题 ...
- zabbix3.4--配置微信告警
1.注册企业微信 https://work.weixin.qq.com/ 2.注册好后登陆,点击“我的企业”,记录企业ID. 3.点击“应用管理”--“创建应用”,创建应用时添加接收告警的用户 4.添 ...
- CodeForces 992C Nastya and a Wardrobe(规律、快速幂)
http://codeforces.com/problemset/problem/992/C 题意: 给你两个数x,k,k代表有k+1个月,x每个月可以增长一倍,增长后的下一个月开始时x有50%几率减 ...
- 《后端也要懂一点前端系列》使用webpack搭建项目
今天突然有兴致想要学习一下前端的技术,所以特此记录学习前端之路.由于之前在公司做的项目大部分都是关于JSP页面的增删改查,所以前端后端都是一个人来写的,对于前端还只是停留在js.html.css阶段, ...
- vim下看C++代码
看C++代码, 缺少合适的编辑器,捣鼓vim. 安装Vundle, 用于插件管理 git clone https://github.com/VundleVim/Vundle.vim.git ~/.vi ...
- 897B. Chtholly's request#长度为偶数的回文数(模拟)
题目出处:http://codeforces.com/problemset/problem/897/B 题目大意:构造一个题意要求的zcy数之后取模 #include<iostream> ...
- 我的 xelatex 模板
\documentclass[twoside,11pt]{article} \usepackage{amsmath,amsfonts} \usepackage{hyperref} \usepackag ...