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:continue
sock_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 subprocess ip_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)

Python自动化之socket初识的更多相关文章

  1. python学习笔记七 初识socket(进阶篇)

    socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...

  2. python自动化之BDD框架之lettuce初识问题集

    最近在学习虫师老师编写的python自动化的书.其中讲到了BDD结构lettuce入门一章. 因为是小白,按部就班地进行操作,先不谈执行操作如何,先来讲讲遇到的几个坑,和怎么解决的: 第一坑:pyth ...

  3. 【python自动化第十一篇】

    [python自动化第十一篇:] 课程简介 gevent协程 select/poll/epoll/异步IO/事件驱动 RabbitMQ队列 上节课回顾 进程: 进程的诞生时为了处理多任务,资源的隔离, ...

  4. Day8 - Python网络编程 Socket编程

    Python之路,Day8 - Socket编程进阶   本节内容: Socket语法及相关 SocketServer实现多并发 Socket语法及相关 socket概念 socket本质上就是在2台 ...

  5. 【目录】Python自动化运维

    目录:Python自动化运维笔记 Python自动化运维 - day2 - 数据类型 Python自动化运维 - day3 - 函数part1 Python自动化运维 - day4 - 函数Part2 ...

  6. python自动化开发学习 I/O多路复用

    python自动化开发学习 I/O多路复用   一. 简介 socketserver在内部是由I/O多路复用,多线程和多进程,实现了并发通信.IO多路复用的系统消耗很小. IO多路复用底层就是监听so ...

  7. python自动化运维之CMDB篇-大米哥

    python自动化运维之CMDB篇 视频地址:复制这段内容后打开百度网盘手机App,操作更方便哦 链接:https://pan.baidu.com/s/1Oj_sglTi2P1CMjfMkYKwCQ  ...

  8. flow.ci + Github + Slack 一步步搭建 Python 自动化持续集成

    理想的程序员必须懒惰,永远追随自动化法则.Automating shapes smarter future. 在一个 Python 项目的开发过程中可能会做的事情:编译.手动或自动化测试.部署环境配置 ...

  9. Selenium2+python自动化23-富文本(自动发帖)

    前言 富文本编辑框是做web自动化最常见的场景,有很多小伙伴遇到了不知道无从下手,本篇以博客园的编辑器为例,解决如何定位富文本,输入文本内容 一.加载配置 1.打开博客园写随笔,首先需要登录,这里为了 ...

随机推荐

  1. ecshop 调用收货地址

    html {insert_scripts files='region.js,utils.js'} <script type="text/javascript"> reg ...

  2. GIT@OSC中托管Android studio代码

    弄了好久,才知道如何向GIT@OSC托管代码,这里有需要的同学可以参考一下. 1.在GIT@OSC上新建一个工程 2.在AS中新建一个工程 3.在AS中选择“enable version contro ...

  3. mssql手工注入

    判断注入点: 1.数字型 http://www.targer.com/article.aspx?id=1 http://www.targer.com/article.aspx?id=1' http:/ ...

  4. Spring--Spring容器

    在使用Spring所提供的各种丰富而神奇的功能之前,必须要在Spring IoC容器中装配好Bean,并建立Bean和Bean之间的关联关系. Spring提供了多种配置方式来实现Bean的装配.但在 ...

  5. ASP.NET MVC使用Bootstrap系列(4)——使用JavaScript插件

    阅读目录 序言 Data属性 VS 编程API 下拉菜单(dropdown.js) 模态框(modal.js) 标签页(tab.js) 工具提示(tooltip.js) 弹出框(popover.js) ...

  6. Python开发【第四篇】:Python基础之函数

    三元运算 三元运算(三目运算),是对简单的条件语句的缩写. ? 1 2 3 4 5 # 书写格式   result = 值1 if 条件 else 值2   # 如果条件成立,那么将 “值1” 赋值给 ...

  7. cas单点登录 SSO 的实现原理

    原文出处: cutesource   欢迎分享原创到伯乐头条 单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户 ...

  8. 如何才能实现在点击链接时直接在网页中打开word文档,但不提示保存

    一般要直接打开需要客户端 1.客户端有word支持 2.客户端浏览器的版本与设置 可寻找一下相关的控件或中间件,我的意见是看能否变通一下,把word转成HTML或PDF再展示给用户.(若用户不需要编辑 ...

  9. CLion注册码算法逆向分析实录

    Link is : http://www.cnblogs.com/foreach-break/p/CLion_License_Fake_Crack.html

  10. hibernate4连接mysql自动创建表之错误

    我在学习Hibernate的过程中,遇到了这样一个错误:JUnit测试通过,但是数据库中却没有创建一个表,控制台的错误信息如下: HHH000388: Unsuccessful: create tab ...