服务器端:

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的更多相关文章

  1. python 3.x 学习笔记14 (socket_ssh and socket_文件传输)

    ssh服务端 import socket,os server = socket.socket() server.bind(('localhost',6666)) server.listen() con ...

  2. D08——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D08 20180829内容纲要: socket网络编程 1  socket基础概念 2  socketserver 3  socket实现简单的SSH服务器端和 ...

随机推荐

  1. Linux下查看CPU信息[/proc/cpuinfo]

    最近在研究linux系统负载的时候,接触到一些关于CPU信息查看的知识,和大家分享一下.通过对/proc/cpuinfo文件中的参数的分析,也学到了不少东西. 在linux操作系统中,CPU的信息在启 ...

  2. ShimmerTextView

    本文来自网易云社区 作者:孙有军 产品中有一个需求,要求TextView的文字有一个高亮的效果,高亮的同时有跑马灯效果! 本来想在网上找一个现成的用用,比如Facebook出的Shimmer,还有很多 ...

  3. 「赛后补题」Meeting(HDU-5521)

    题意 A,B两个人分别在1和n区.每个区有若干点(区之间的点可以重复,各个区内点间的距离一致),给出区之间有联系的图以及到达所需时间.求两个人见面最短时间以及在哪个区碰面(可有多个) 分析 隐式图搜索 ...

  4. 敏捷开发学习笔记-Agile development(AM)

    以人为核心,迭代,循序渐进 项目被切分为多个子项目,每个子项目都经过测试,具备集成和可运行的特征 5个价值观:沟通.简单.反馈.勇气.谦逊   敏捷模型与瀑布模型的区别 相对于瀑布模型,提高开发效率和 ...

  5. Java开发工程师(Web方向) - 03.数据库开发 - 第5章.MyBatis

    第5章--MyBatis MyBatis入门 Abstract: 数据库框架的工作原理和使用方法(以MyBatis为例) 面向对象的世界与关系型数据库的鸿沟: 面向对象世界中的数据是对象: 关系型数据 ...

  6. 小程序button 去边框

    /*使用 button::after{ border: none; } 来去除边框*/.free-btn-bordernone{ background: none !important; color: ...

  7. 【shell 练习4】编写Shell用户管理脚本(二)

    一.创建.删除.查看用户,随机生成八位数密码 #!/bin/bash #Author:yanglt #!/bin/bash #Author:yanglt #Blog:https://www.cnblo ...

  8. java length属性、length()、size()

    length属性 length是属性,用于说明数组的长度. String []list={"wo","shi","shuaibi"}; Sy ...

  9. 一个简单的Spring的AOP例子

    目标对象的接口:IStudent.java  1  /**  2  *  3   */  4  package  com.dragon.study; 5   6  /**  7  *  @author ...

  10. POJ 1679 The Unique MST(最小生成树)

    Description Given a connected undirected graph, tell if its minimum spanning tree is unique. Definit ...