Socket_SSH-1
服务器端:
import socket,os
server=socket.socket()
server.bind(('localhost',9999))
server.listen()
while True:
conn,addr=server.accept()
print("new conn:",addr)
while True:
print("等待新指令")
data=conn.recv(1024)
if not data:
print("客户端已经断开")
break
print("执行指令:",data)
cmd_res=os.popen(data.decode()).read()
#接收字符串,执行结果也是字符串.os.popen()函数调用系统命令nmap进行扫描,
#但用os.popen就可以读出执行的内容,popen返回的是file read的对象,对其进行读取使用read(),就可看到执行的输出:
if len(cmd_res)==0:
cmd_res="cmd has no output.."
print("before send",len(cmd_res))
conn.send(cmd_res.encode("utf-8"))
print("send done")
客户端:
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=client.recv(1024)
print(cmd_res.decode())
server.close()
服务器端运行结果:
new conn: ('127.0.0.1', 64074)
等待新指令
执行指令: b'dir'
before send 466
send done
等待新指令
执行指令: b'pwd'
'pwd' is not recognized as an internal or external command,
operable program or batch file.
before send 19
send done
等待新指令
客户端运行结果:
>>:dir
b' Volume in drive C is OSDisk\n Volume Serial Number is 002E-D604\n\n Directory of C:\\abccdxddd\\Oldboy\\Py_Exercise\\Day8\n\n08/03/2017 11:18 AM <DIR> .\n08/03/2017 11:18 AM <DIR> ..\n08/03/2017 11:17 AM 650 socket_server_ssh.py\n08/03/2017 11:18 AM 250 sock_server_client.py\n08/02/2017 01:50 PM 187 ????.py\n 3 File(s) 1,087 bytes\n 2 Dir(s) 146,482,311,168 bytes free\n'
>>:pwd
b'cmd has no output..'
>>:
Socket_SSH-1的更多相关文章
- python 3.x 学习笔记14 (socket_ssh and socket_文件传输)
ssh服务端 import socket,os server = socket.socket() server.bind(('localhost',6666)) server.listen() con ...
- D08——C语言基础学PYTHON
C语言基础学习PYTHON——基础学习D08 20180829内容纲要: socket网络编程 1 socket基础概念 2 socketserver 3 socket实现简单的SSH服务器端和 ...
随机推荐
- 成都Uber优步司机奖励政策(3月21日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- kafka配置参数详解
Broker Configs Property Default Description broker.id 每个broker都可以用一个唯一的非负整数id进行标识:这个id可以作为broker的 ...
- hive读书笔记
笔记来源<Hive编程指南> 一.hive命令行界面: ‘一次使用’命令:执行一个或多个(分号分隔)查询后hive CLI立即退出: hive -e "select * from ...
- 「国庆训练&知识学习」图的最大独立集与拓展(Land of Farms,HDU-5556)
题意 一个\(N*M\)的矩阵,其中"."代表空地,"0-9"代表古代建筑,我们如果选择了一个编号的古代建筑想要建立,那么对应就要将全部该编号的建筑建立起来,如 ...
- 汽车VIN码,车架号,移动端,服务器端OCR识别 技术公司
很多人在购买车辆的时候,只关注性能.外观.内饰等,其实真正的内行是首先看车辆的VIN码,也叫车架号码. VIN码(车架号码)是一辆车的唯一身份证明,一般在车辆的挡风玻璃处,有的在车辆防火墙上,或B柱铭 ...
- Unity编辑器 - 自动排版
Unity编辑器 - 自动排版 使用花括号提高可读性 //一组横向排列的控件 GUILayout.BeginHorizontal(); { GUILayout.BeginVertical(); { / ...
- leetcode-对称二叉树
对称二叉树 给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2, ...
- 爬虫2.1-scrapy框架-两种爬虫对比
目录 scrapy框架-两种爬虫对比和大概流程 1. 传统spider爬虫 2. crawl型爬虫 3. 循环页面请求 4. scrapy框架爬虫的大致流程 scrapy框架-两种爬虫对比和大概流程 ...
- ide的tomcat的部署和配置
关于intellij ide的tomcat的部署和配置 1.下载zip版的Tomcat 7,并解压.下载地址 2.在IDEA中配置Tomcat 7 在idea中的Settings(Ctrl+Alt ...
- 《剑指Offer》题十一~题二十
十一.旋转数组的最小数字 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组{3, 4, 5, 1, 2}为{ ...