【发布时间】:2016-12-29 18:25:42
【问题描述】:
我有一个简单的脚本 (child.py),如下所示:
#!/usr/bin/env python
import pexpect
def ency():
child = pexpect.spawn("cryptsetup luksChangeKey /mnt/ency")
child.expect('Enter passphrase to be changed:')
child.sendline('password-old')
child.expect('Enter .*: ')
child.sendline('password-new')
child.expect('Verify .*: ')
child.sendline('password-new')
child.interact()
ency()
我使用不同的脚本 (master.sh) 调用此脚本
#!/bin/bash
python child.py
当我运行child.py 时代码运行成功,但是当我使用master.sh 调用child.py 时,出现以下错误:
Traceback (most recent call last):
File "child.py", line 15, in <module>
ency()
File "child.py", line 13, in ency
child.interact()
File "/usr/lib/python2.7/site-packages/pexpect-4.2.1-py2.7.egg/pexpect/pty_spawn.py", line 740, in interact
mode = tty.tcgetattr(self.STDIN_FILENO)
termios.error: (25, 'Inappropriate ioctl for device')
请注意,我正在使用 PowerCLI 调用 master.sh。我还尝试使用 PowerCLI 的 Invoke-vmscript –vm vmname –scripttext “python child.py” 直接调用 child.py 并且仍然得到相同的行为。
关于如何解决此问题的任何想法或建议?
谢谢
【问题讨论】:
-
master.py是一个 shell 脚本吗?为什么python child.py? -
master 是 python 文件,child 是 bash 脚本。我编辑了我的问题以反映这一点。感谢您指出这一点。
-
master 是一个 python 文件,child 是一个 bash 脚本,你确定这不是 @Taleeb 的相反方式吗?还有,你怎么称呼
master.py? -
stackoverflow.com/a/1402389/2988730。不是骗子,只是一个可能的解决方案。
-
@Gabriel。 cryptsetup 是 LUKS 管理套件的一部分。如果您没有安装该程序,请尝试针对您拥有的其他一些需要一组重要输入的程序运行。
标签: python python-2.7 tty pexpect