Popen对象

  • poll() 判断是否执行完毕,执行完毕返回0,未执行完毕返回None
  • terminate() 终止进程发送SIGTERM信号
  • raise 自定义返回错误
import time
import subprocess class TimeoutError(Exception):
pass def command(cmd, timeout=60):
"""执行命令cmd,返回命令输出的内容。
如果超时将会抛出TimeoutError异常。
cmd - 要执行的命令
timeout - 最长等待时间,单位:秒
"""
p = subprocess.Popen(cmd, stderr=subprocess.STDOUT, stdout=subprocess.PIPE, shell=True)
t_beginning = time.time()
seconds_passed = 0
while True:
if p.poll() is not None:
break
seconds_passed = time.time() - t_beginning
if timeout and seconds_passed > timeout:
p.terminate()
raise TimeoutError(cmd, timeout)
time.sleep(0.1)
return p.stdout.read() if __name__ == "__main__":
print command(cmd='ping www.redicecn.com', timeout=1)

  

Python subprocess + timeout的命令执行的更多相关文章

  1. python subprocess中ssh命令的特殊性

    今天尝试使用python 的 subprocess 模块 使用类似如下语句: p=subprocess.Popen(['ssh','root@localhost'],stdout=subprocess ...

  2. Python开发的3种命令执行方法

    在python开发中,我们常常需要执行命令,修改相关信息.那对于初学者来说,python中如何执行命令呢?今天,小编就为大家分享3种python命令执行的方法. 1. 使用os.system(&quo ...

  3. python之commands和subprocess入门介绍(可执行shell命令的模块)

    一.commands模块 1.介绍 当我们使用Python进行编码的时候,但是又想运行一些shell命令,去创建文件夹.移动文件等等操作时,我们可以使用一些Python库去执行shell命令. com ...

  4. python之实现批量远程执行命令(堡垒机)

    python远程批量执行 我并不是一个专业的开发,我一直在学习linux运维,对于python也是接触不久,所以代码写的并不是很规范简洁. 前段时间一个同学找我一起做一个自动化运维平台,我对pytho ...

  5. python套接字编程实现ntp服务和远程命令执行

    python套接字编程实现ntp服务和远程命令执行 目录 基于udp实现ntp服务 基于tcp实现远程命令执行 基于udp实现远程命令执行 tcp与udp的比较 前面关于套接字基础请查阅 https: ...

  6. Python通过paramiko批量远程主机执行命令

    一.前言 在日常运维的过程中,经常需要登录主机去执行一些命令,有时候需要登录一批主机执行相同的命,手动登录执行的化效率太慢, 所以可以通过Python的paramiko模块批量执行,本篇文章基于pyt ...

  7. Python中使用os模块执行远程命令

    1. 使用os模块远程执行命令 服务端代码 1 import socket 2 import os 3 4 sh_server = socket.socket() #创建一个socket对象 5 sh ...

  8. 【解决方案】django初始化执行python manage.py migrate命令后,除default数据库之外的其他数据库中的表没有创建出来

    [问题原因]:django工程中存在多个应用,每个应用都指定了对应的数据库.执行python manage.py migrate命令时没有指定数据库,将只初始化默认的default数据库. [解决方案 ...

  9. 转:Python安全 - 从SSRF到命令执行惨案

    转:https://www.leavesongs.com/PENETRATION/getshell-via-ssrf-and-redis.html Python安全 - 从SSRF到命令执行惨案 PH ...

随机推荐

  1. 数据结构之树(Tree)(一) :树

    ps:好久没用动手写blog了,要在这条路上不断发展,就需要不停的学习,不停的思考与总结,当把写blog作为一种习惯,就是自我成长的证明,Fighting!. 一.简介 树是一种重要的非线性数据结构, ...

  2. Starting MySQL.. ERROR! The server quit without updating PID file (/usr/local/mysql/var/AYXXXXXXXXXXX.pid). 错误解决方法

    /etc/init.d/mysql start无法启动MySQL错误信息如下: ERROR! MySQL server PID file could not be found! Starting My ...

  3. 输入参数能动态调决定调用哪个实现类 spring的一个特性

    今天做公司的以前项目的时候发现项目中有个特别好的东西,记录下来,分享一下 发现spring有个这样的功能,我也不知道这个是东西应该怎么称呼,就是通过输入参数,动态决定调用接口的实现类.简单理解就是在s ...

  4. sql server数据库中删除的过程

    这是在vb中的一个对数据库中数据的删除过程,点击按钮后程序第一句则是将你要删除的那条记录的位置作为书签保存到myBookmark这个变量里面,然后选择确定删除的话,首先执行if语句下的第一句 mrc. ...

  5. 【2013Esri全球用户大会精彩看点】Jack为您全面解读“GIS-Transforming Our World”

    GIS正影响着最尖端的科学与技术,正改变着我们的世界. 1.     GIS的带来的改变不只是物质世界的,还有观念方面. 当今世界面临各种挑战,我们要创造更美好的未来,需要智能的GIS.GIS改变了我 ...

  6. 转义字符(\)对JavaScript中JSON.parse的影响

    Email:longsu2010 at yeah dot net 按照ECMA262第五版中的解释,JSON是一个提供了stringify和parse方法的内置对象,前者用于将js对象转化为符合jso ...

  7. STM32通过FSMC驱动3.2寸液晶屏实现的音乐频谱

    视频演示: http://player.youku.com/player.php/sid/XNDcyMDgwMTE2/v.swf 源码下载: lattice_ music _tft.rar(1.42 ...

  8. 关于EL表达式的生效时间(猜想)

    通过ajax与服务端异步交互的时候,在服务端将某些变量或对象设置到request等域里,此时页面上的EL表达式是获取不到ajax异步交互时设置在request等域里的变量或对像的. 我猜测可能EL表达 ...

  9. asp.net网站发布到服务器GET的技能

    刚刚知道映射网络驱动器的作用(虽然才知道,但是我高兴) 把服务器上的硬盘或者其他电脑共享给你的盘映射到本地,就和操作本地硬盘一样. 双击计算机->映射网络驱动器->上面选择驱动器号 下面文 ...

  10. Leetcode-33-Search in Rotated Sorted Array (Hard)

    二分查找算法以及旋转之后的数组二分查找算法: #!/usr/local/bin/python3 # -*- coding: utf-8 -*- __author__ = 'author' class ...