shell获取python脚本结果_在python函数中运行shell脚本并从脚本中获取数据

import sys

from subprocess import Popen, PIPE; STDOUT

pyversion = sys.version_info.major

class interact():

def __init__(self, c):

self.handle = Popen(c, stdin=PIPE, stdout=PIPE, stderr=STDOUT, shell=True)

sleep(1)

def send(self, what):

for c in what:

sys.stdout.write(c)

if pyversion == 3:

self.handle.stdin.write(bytes(c, 'UTF-8'))

else:

self.handle.stdin.write(c)

sys.stdout.flush()

sys.handle.stdin.flush()

sleep(0.05)

def getrow(self):

return self.handle.stdout.readline()

def poll(self):

return self.handle.poll()

def done(self):

if self.poll() == 1:

return 'Return Y'

return 'Return X'

def close(self):

self.handle.stdout.close()

self.handle.stdin.close()

您可以这样做,其中您有自己的结构,并根据退出代码或当前运行代码返回所需的任何内容,如果进程尚未完成,则返回None。在

只需将其用作:

^{pr2}$

或者tweek-it,我在进行SSH调用和生成OpenSSL密钥时使用了这段代码作为一个基本结构,工作起来很有魅力,但我认为我必须要用tweek它才能使它与SSH一起工作(找不到代码atm)

您可以添加以下内容:

^{3}$

在done()中,如果发生错误,只需返回Z(如您所述)。在

注意:如果您不调用getrow()在一个沉重的输出脚本/命令上,缓冲区将溢出并挂起整个内容,因此请确保您偶尔点击该脚本或删除stdout=PIPE, stderr=STDOUT。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值