shell获取python脚本结果_在python函数中运⾏shell脚本并从
脚本中获取数据
import sys
shell脚本返回执行结果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.adline()
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。在

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。