我如何在后台使用 pexpect to 运行 东西?

How do I use pexpect to run things in the background?

我在脚本中使用 'Pexpect' 库,之后想做一些操作。我正在做的事情如下:

def child():
        pexpect.spawn("ssh tranzmeo@192.168.21.110")
        child.expect(".*password.*")
        child.sendline('tranzmeo1@#')
        print(child.before)
        child.interact()
        return

这是我从另一个文件调用的函数(我称之为训练。)当我 运行 训练时, child() 被调用,但它立即停止程序并进入 tranzmeo 控制台,我不想要。我需要 ssh 进入它并在 tranzmeo 中在后台进行一些操作。我怎样才能使用 pexpect 做到这一点?

我的operation如下(仅供参考):

def scp(tensorflow_file_location_temp ,tensorflow_file_loc)
        child = pexpect.spawn("scp -r " + tensorflow_file_location_temp + "models@192.168.21.117:" + tensorflow_file_location )
        child.expect(".*password.*")
        child.sendline('Tranzmeo1@#')
        child.interact()

.interact() gives control of the child process to the interactive user (the human at the keyboard). Keystrokes are sent to the child process, and the stdout and stderr output of the child process is printed.

如果你不想要那个,就不要调用它!您想继续使用从 pexpect.spawn("ssh tranzmeo@192.168.21.110") 返回的对象(您发布的代码没有将其分配给 child,我认为这是复制粘贴错误):

child.sendline("scp -r " + tensorflow_file_location_temp + "models@192.168.21.117:" + tensorflow_file_location)

但是你应该设置 ssh 密钥,然后你就可以在没有密码的情况下做你想做的事了 pexpect simply running scp