我正在尝试创建一个Python脚本,该脚本使用子过程模块连接到数据库服务器中的数据库并在连接的数据库上进行管理活动。
这是我要尝试的示例脚本
from subprocess import Popen , PIPE
p = Popen(['cmd'], stdin=PIPE ,stdout = PIPE, stderr=PIPE)
p.stdin.write(b'ipconfig\n') # write to stdin
print (p.stdout.read()) # read stdout
p.stdin.write(b'sqlplus sys/sys@orcl as sysdba\n')
print (p.stdout.read())
p.stdin.write(b'shutdown immediate\n')
print (p.stdout.read())
p.stdin.write(b'startup\n')
print (p.stdout.read())
每次输入后,我需要检查输出以确保没有任何错误。对于任何输出或错误,需要将适当的msg传播回给用户或调用程序。
上面的脚本被挂起可能是在第一个stdout.read之后。我检查了各种类似的问题和文章,但所读内容均未提供有效的内容。请让我知道我该怎么办。