1. os.popen()

  • os.system(cmd)会直接输出命令的结果到屏幕上,返回一个状态码0或1。
  • os.popen(cmd)会返回一个<open file 'dir', mode 'r' at 0x016AD1D8> file read对象
  • 如果要读取返回的内容,os.popen(cmd).read()进行读取。

2. subprocess(Python3)和commands(Python2)模块

运行python的时候,我们都是在创建并运行一个进程。像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序。在Python中,我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序。
subprocess包中定义有数个创建子进程的函数,这些函数分别以不同的方式创建子进程,所以我们可以根据需要来从中选取一个使用。另外subprocess还提供了一些管理标准流(standard stream)和管道(pipe)的工具,从而在进程间使用文本通信。

Python2中是commands,到Python3中commands模块合并到了subprocess。

3. socket编程思路

TCP服务端:

  1. 创建套接字,绑定套接字到本地IP与端口

    socket.socket()
    s.bind()

  2. 开始监听连接
    s.listen()

  3. 进入循环,不断接受客户端的连接请求
    conn,addr = s.accept()
  4. 然后接收传来的数据,并发送给对方数据

    s.recv()
    s.sendall()

  5. 传输完毕后,关闭套接字
    s.close()

TCP客户端:

  1. 创建套接字,连接远端地址

    socket.socket)
    s.connect()

  2. 连接后发送数据和接收数据

    s.sendall()
    s.recv()

  3. 传输完毕后,关闭套接字
    s.close()

client端

import socket
ip_port = ("localhost",6999)sock_client = socket.socket()sock_client.connect(ip_port)while True:cmd = input(">>>>").strip()if not cmd:continuesock_client.sendall(bytes(cmd,encoding="utf-8"))data = sock_client.recv(1024)print(str(data,encoding="utf-8"))sock_client.close()

server端

import socket
import subprocessip_prort = ("localhost",6999)sock_client = socket.socket()sock_client.bind(ip_prort)sock_client.listen(1)
conn, addr = sock_client.accept()while True:print("conn:---->",conn)print("addr:---->",addr)data = conn.recv(1024)# cmd_status,cmd_result = subprocess.getoutput(data)# if len(cmd_result) == 0:#     conn.sendall("Done")# else:print(data)conn.sendall(data.upper())# conn.sendall(bytes(str(data).upper(),encoding="utf-8"))
conn.close()

sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #(创建对象)

  • 参数一,地址簇: AF_INET为ipv4地址; AF_INET6为ipv6地址; AF_UNIX只能用于单一的Unix系统连接;
  • 参数二,类型: SOCK_STREAM指tcp协议默认; SOCK_DGRAM指udp; SOCK_RAW原始套接字,普通的套接字无法处理ICMP、IGMP等网络报文,而SOCK_RAW可以,而且SOCK_RAW也可处理特殊的IPv4报文,另利用原始套接字,可通过IP_HDRINCL套接字选项由用户构造IP头;
  • 参数三,协议: 0(默认,与特定的家族相关的协议,若是0系统会根据地址格式和套接类别自动选择一个合适的协议);
  • sock.bind(address) #(将套接字绑定到地址,address的格式取决于地址族,在AF_INET下,以tuple的形式表示地址(IP,port)

转载于:https://www.cnblogs.com/wspblog/p/5853795.html

Python自动化之socket初识相关推荐

  1. PYTHON——TCPUDP:Socket初识

    一.概述 套接字(socket)是用于网络通信的数据结构.在任何类型的通信开始之前,都必须创建Socket,可以将它们比作电话插孔,没有它们就无法进行通信. Socket主要分为面向连接的Socket ...

  2. python自动化办公脚本下载-python自动化脚本

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 运维自动化,已经成为运维必不可少的一部分,下面附上自己写的监控nginx_stat ...

  3. 如何做好python自动化运维,python在运维中的应用

    这篇文章主要介绍了一个有趣的事情,具有一定借鉴价值,需要的朋友可以参考下.希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下. 1.如何做好python自动化运维 随着移动互联网的普及, ...

  4. socket初识和安装

    socket初识和安装day_22 一.基于VScode,socket库安装 服务器端: npm install --save socket.io javascript客户端: npm install ...

  5. Python自动化运维---学习笔记

    Python自动化运维 python简介 入门容易精通难,python适合作为第二编程语言(对于运维:Shell,对于开发:Java,对于全栈:nodejs(javascript)) python官网 ...

  6. Python自动化运维-丁志文-专题视频课程

    Python自动化运维-4561人已学习 课程介绍         本职业规划路线是专门为从事运维开发的同学准备的,并且是严格按照企业需求的标准定制的学习路线.路线中包含python基础和进阶,lin ...

  7. python 滚动条方法_selenium+python 自动化中界面滚动条操作方法

    虽然webdriver提供了操作浏览器的前进和后退的方法,但对于浏览器滚动条并没有提供相应的操作方法,以下使用的方法: 借助JavaScript来控制浏览器的滚动条,webdriver提供了execu ...

  8. Appium+python自动化-启动app

    Appium+python自动化-启动app 环境已经搭建好了,接下来就是需要启动APP,如何启动app呢?首先要获取包名,然后获取launcherActivity.获取这两个关键东西的方法很多,这里 ...

  9. 我的python之路一初识python的自我理解

    初识python的自我理解 关于python的自我简记 我认识的python 怎么开始python的学习和使用 我尝试过的几个python学习的常用组合 关于python的自我简记 初识python是 ...

  10. Selenium2+python自动化24-js处理富文本(带iframe)

    前言 上一篇Selenium2+python自动化23-富文本(自动发帖)解决了富文本上iframe问题,其实没什么特别之处,主要是iframe的切换,本篇讲解通过js的方法处理富文本上iframe的 ...

最新文章

  1. 在CSS3中,可以利用transform功能来实现文字或图像的旋转、缩放、倾斜、移动这四种类型的变形处理...
  2. centos7 安装教程 图文流程安装后包含界面
  3. 在 CloudFoundry 环境下开发 multitenant 应用的一些基本概念
  4. 是什么使波西米亚狂想曲成为杰作-数据科学视角
  5. HTML页面之间跳转与传值(JS代码)
  6. android ichartjs 曲线图,C#中利用LightningChart绘制曲线图表
  7. AI学习笔记(十六)中文分词
  8. 【MCM-2017】2017年数模美赛D题 - 特奖论文学习
  9. c语言编写五子棋报告,C语言编写五子棋游戏
  10. Excel 合并两列时间,中间用分隔符连接
  11. Failed to process import candidates for configuration class :Annotation-specified bean name ‘XXX‘ fo
  12. NLP之文本分类方法之基础知识
  13. 蓝桥杯总结及经验教训
  14. python3中eval函数用法简介_python3中eval函数用法使用简介
  15. 定制Android模拟器skin
  16. Web标准概念--摘抄《CSS布局实录》
  17. 字体在ppt中可以整体替换吗_PPT字体替换其实很简单
  18. 解决方案丨智慧写字楼:EasyCVR智能视频平台助力写字楼智慧化运营升级
  19. BZOJ---1022:[SHOI2008]小约翰的游戏【Anti-SG游戏】
  20. 腾讯离职元老的内部邮件:马化腾的趣事

热门文章

  1. MySQL - 执行sql报错USING BTREE
  2. 此刻心情--我为什么不找女朋友
  3. Spring Security OAuth2实现单点登录
  4. BOM对象有哪些,列举window对象?
  5. JAVA 导出 Excel, JS 导出 Excel
  6. [转]常见的软件版本编号及命名
  7. Go-闭包和匿名函数讲解
  8. (转载)C#控件缩写规范
  9. ASCII、 Unicode 和 UTF8
  10. yum和apt-get 软件包管理器的用法及区别