1、执行命令os.system('ls')

  • os.system 返回1 or 0  ,不能当做数据发送
# windows
# dir 查看某个文件夹下子自文件名与子文件夹名
# ipconfig 查看本地网卡的ip信息
# tasklist 查看运行的进程 # linux
# ls
# ifconfig
# ps aux

  

2、subprocess模块

但注意注意注意:

res = subprocess.Popen(cmd.decode('utf-8'),shell=True,stderr=subprocess.PIPE,stdout=subprocess.PIPE)

命令结果的编码是以当前所在的系统为准的,如果是windows,那么res.stdout.read()读出的就是GBK编码的,在接收端需要用GBK解码,且只能从管道里读一次结果

import subprocess
# subprocess.Popen('dir') # FileNotFoundError: [WinError 2] 系统找不到指定的文件。
# subprocess.Popen('dir', shell=True) # 命令执行正确
obj = subprocess.Popen('dir', shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
) print(obj)
print('studout:', obj.stdout.read().decode('gbk')) # windows解码成gbk # 并且只能从管道读一次
print('studerr:', obj.stderr.read().decode('gbk')) # linux解码成utf-8 # 命令执行错误
obj = subprocess.Popen('dissr', shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
) print(obj)
print('studout:', obj.stdout.read().decode('gbk')) # windows解码成gbk
print('studerr:', obj.stderr.read().decode('gbk')) # linux解码成utf-8

3、简单远程执行命令程序开发

  (1)服务端

import socket
import subprocess server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind(('127.0.0.1', 9994)) server.listen(5) while True:
print('waiting...')
conn, addr = server.accept() while True:
try:
# 1.收命令
data = conn.recv(1024)
print('=》', data)
if not data:
break # 2.执行命令,拿到结果
obj = subprocess.Popen(data.decode('utf-8'), shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
) # 3.把命令的结果返回给客户端
stdout = obj.stdout.read()
stderr = obj.stderr.read()
conn.send(stdout+stderr) # 可以优化的一个点 except ConnectionResetError:
break conn.close() server.close()

  (2)客户端

import socket

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

client.connect(('127.0.0.1', 9994))

while True:

    # 1.发出命令
data = input('>>>').strip()
if not data:
continue
client.send(data.encode('utf-8')) # 2.接受命令的结果,打印
ret = client.recv(1024)
print('from server:', ret.decode('gbk')) # windows gbk编码 client.close()

4、终止python程序

15 [网络编程]-ssh远程命令的更多相关文章

  1. 虚拟机VMware网络类型&&SSH远程连接Linux

    前言: Linux专题是16年11月开始写,说来惭愧,已经5个月没学Linux,至今感觉连入门还没达到.暑假实习有投运维开发岗位,无奈对Linux不熟悉,校招简历也被刷了.so, 我打算先花1个月内的 ...

  2. 【循序渐进学Python】15.网络编程

    Python 内置封装了很多常见的网络协议的库,因此Python成为了一个强大的网络编程工具,这里是对Python的网络方面编程的一个简单描述. 1. 常用的网络设计模块 在标准库中有很多网络设计相关 ...

  3. 判断ssh远程命令是否执行结束

    注:这是一个没什么鸟用的功能.不过也算是一种拓展. 通常在那些"一键化部署"的shell脚本中,可能需要使用ssh执行远程命令来实现一些简单的自动化,这些远程命令可能需要执行一段时 ...

  4. 8.9.网络编程_Socket 远程调用机制

    1.网络编程 1.1.网络编程概述: 通过通信线路(有线或无线)可以把不同地理位置且相互独立的计算机连同其外部设备连接起来,组成计算机网络.在操作系统.网络管理软件及网络 通信协议的管理和协调下,可以 ...

  5. ssh 远程命令

    远程拷贝文件,scp -r 的常用方法: 1.使用该命令的前提条件要求目标主机已经成功安装openssh-server 如没有安装使用 sudo apt-get install openssh-ser ...

  6. 网络编程ssh,粘包

    1.什么是socket? TCP,可靠地,面向连接协议,有阻塞rect udp,不可靠的,无线连接的服务 这里因为不需要阻塞,所以速度会很快,但安全性不高 2.关于客户端退出而服务器未退出的解决办法 ...

  7. socket编程执行远程命令实现_python

    一.单客户端连接的例子: 服务端: import socket,os,subprocess server=socket.socket() server.bind(('localhost',1234)) ...

  8. [Python 网络编程] TCP、简单socket模拟ssh (一)

    OSI七层模型(Open System Interconnection,开放式系统互联) 应用层 网络进程访问应用层: 为应用程序进程(例如:电子邮件.文件传输和终端仿真)提供网络服务: 提供用户身份 ...

  9. 网络编程 - 1.简单的套接字通信/2.加上通信循环/3.bug修复/4.加上链接循环/5.模拟ssh远程执行命令

    1.简单的套接字通信 服务端 ''' 服务端 接电话 客户端 打电话 1.先启动服务端 2.服务端有两种套接字 1.phone 用来干接收链接的 2.conn 用来干收发消息的 ''' import ...

随机推荐

  1. Jmeter入门--工具组成和线程组

    1.Jmeter工具组成部分: 资源生成器:用于生成测试过程中服务器,负载机的资源代码.(LoadRunner中的VuGen) 用户运行器:通常是一个脚本运行引擎,根据脚本要求模拟指定的用户行为.(L ...

  2. [翻译] PNChart

    PNChart https://github.com/kevinzhow/PNChart You can also find swift version at here https://github. ...

  3. 审计系统---堡垒机python下ssh的使用

    堡垒机python下ssh的使用 [堡垒机更多参考]http://www.cnblogs.com/alex3714/articles/5286889.html [paramiko的Demo实例]htt ...

  4. C++实现一个Vector3空间向量类(转)

    转自:http://www.2cto.com/kf/201311/260139.html ector2,3,4类在DirectX中都有现成的可以调用,不过要实现其中的功能其实也不难,也都是一些简单的数 ...

  5. win7 64 &vs2010 与 opengl配置

    http://blog.csdn.net/lixam/article/details/7618015 http://blog.sina.com.cn/s/blog_7745fc8601017m36.h ...

  6. Zabbix日常监控(触发器表达式、远程执行命令、宏简等)简单记录

    主机的工作基本流程 Host group --> Host --> Application --> Item --> Trigger(OK-->PROBLEM,trigg ...

  7. RTCM32编解码中的一些概念及相关文献阅读

    1. IODC和 IODE ——  导航电文相关.iode/iodc是在GPS系统的ICD2中定义的参数,iode指星历数据事件,iodc指星钟数据事件. IOD 是 issue of data ,数 ...

  8. bin/hdfs dfs命令

    appendToFile Usage: hdfs dfs -appendToFile <localsrc> ... <dst> 追加一个或者多个文件到hdfs制定文件中.也可以 ...

  9. Linux新建用户没有设置密码

    只要你能登陆root账户就行 登陆root账户 输入  echo "密码“ | passwd --stdin 用户名

  10. Maven实战(八)pom.xml简介

    目录 pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件.开发者需要遵循的规则.缺陷管理系统.组织和licenses.项目的url.项目的依赖 ...