问题是我需要在同一个进程中访问多个 shell,因为我有一个可以连接到多个节点的系统我可能需要在系统上执行命令,然后在节点上执行,我需要发送多个命令不创建另一个进程的节点
例如,我编写此代码是为了在我的 solaris 系统上访问 Sybase db(由于某种原因,我无法在我们拥有的 Python 2.6 版本上安装 Sybase 模块)
cmd1 = 'isql -Usa -w1024 -P********'
cmd2 = 'use imhdb'
cmd3 = 'go'
cmd4 = "SELECT Id_number, Object_name FROM IM_top WHERE Object_name LIKE'%BtsSiteMgr=CAI3533%'"
final = Popen("{0}; {1}; {2}; {3}".format(cmd1, cmd2, cmd3,cmd4),shell=True,stdin=PIPE,stdout=PIPE, stderr=STDOUT, close_fds=True)
stdout, nothing = final.communicate()
print(stdout)
输出: /bin/sh: 使用:未找到 /bin/sh: go: 未找到 /bin/sh: SELECT: 未找到
那是因为在它执行了第一个命令之后,它创建了另一个进程作为 bash 而不是在 sybase sql 控制台中,所以命令当然不能被识别。所以我该怎么做呢?