У меня есть простой скрипт (child.py
), как показано ниже:pexpect (в) сообщил «недопустимый IOCTL для устройства» при работе на виртуальной машине с PowerCLI
#!/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
, но когда я envoke child.py
с помощью master.sh
, я получаю следующее сообщение об ошибке:
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')
Обратите внимание, что я вызываю master.sh
с использованием PowerCLI. Я также попытался вызвать child.py
непосредственно с помощью PowerCLI's Invoke-vmscript –vm vmname –scripttext “python child.py”
и по-прежнему получать то же поведение.
Любые идеи или предложения о том, как разрешить это?
Благодаря
ли 'master.py' сценарий оболочки? Почему «python child.py'? – pynexj
master - это файл python, child - скрипт bash. Я отредактировал свой вопрос, чтобы отразить это. спасибо, что указали это. – Taleeb
* master - это файл python, child - это скрипт bash *, вы уверены, что это не так? @Taleeb? Кроме того, как вы называете 'master.py'? – Gabriel