服务器端:

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. ORA-15032、ORA-15033—Linux环境

    SQL> alter diskgroup DATA add failgroup DATA_0000 disk '/dev/raw/raw12'; alter diskgroup DATA add ...

  2. hdu2037今年暑假不AC(贪心,活动安排问题)

    今年暑假不AC Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submi ...

  3. jenkins--Jenkins+Git+coding+maven 实现自动化测试持续集成

    1.打开Jenkins官网,下载jenkins.war https://jenkins.io/download/ 2.将该war包直接放置到Tomcat的webapp下. 3.查看自己Tomcat的端 ...

  4. flex布局笔记

    flex布局: 容器: 容器主轴方向: 项目的主轴对齐方式: space-between:两端对齐,项目之间的间隔都相等. space-around:每个项目两侧的间隔相等.所以,项目之间的间隔比项目 ...

  5. Java并发基础--volatile关键字

    一.java内存模型 1.java内存模型 程序运行过程中的临时数据是存放在主存(物理内存)中,但是现代计算机CPU的运算能力和速度非常的高效,从内存中读取和写入数据的速度跟不上CPU的处理速度,在这 ...

  6. lintcode First Unique Number In Stream

    First Unique Number In Stream 描述: Given a continuous stream of numbers, write a function that return ...

  7. 解析Java中final关键字的各种用法

    首先,我们可以从字面上理解一下final这个英文单词的中文含义:“最后的,最终的; 决定性的; 不可更改的:”.显然,final关键词如果用中文来解释,“不可更改的”更为合适.当你在编写程序,可能会遇 ...

  8. 加密SecurityHelper

    接下来给大家分享一下我用的加密helper,现在只用的md5加密的方法,网上很多方法找到的时候加密完了会变成乱码,这样对于密码这种字段保存的时候就会出错.其实只需要把加密完的byte字节转化成16位就 ...

  9. 【转载】Android 内存溢出如何发生的。

    [转载]Android 内存溢出如何发生的. 且谈Android内存溢出 前言 关于android的内存溢出在创新文档库中也有不少,网络上也有很多这方面的资料.所以这遍文章不算是正真意义上的创新,仅仅 ...

  10. 2.安装hdfs yarn

    下载hadoop压缩包设置hadoop环境变量设置hdfs环境变量设置yarn环境变量设置mapreduce环境变量修改hadoop配置设置core-site.xml设置hdfs-site.xml设置 ...