Linux期望脚本如何工作?

Linux期望脚本如何工作?,linux,expect,Linux,Expect,我曾经尝试通过I/O重定向(如echo|ssh@)输入密码,但它当然不起作用。然后我发现ssh实际上直接从/dev/tty而不是STDIN读取密码,所以I/O重定向对它不起作用 据我所知,Expect脚本是这类工作的标准方式。我很好奇Expect是如何工作的?我猜它在一个子进程中运行目标程序,并更改子进程的/dev/tty以引用另一个位置,但我不知道如何更改 它使用一种称为伪TTY的东西,这种东西看起来像TTY,但允许编程控制。见例

我曾经尝试通过I/O重定向(如
echo|ssh@
)输入密码,但它当然不起作用。然后我发现ssh实际上直接从/dev/tty而不是STDIN读取密码,所以I/O重定向对它不起作用


据我所知,Expect脚本是这类工作的标准方式。我很好奇Expect是如何工作的?我猜它在一个子进程中运行目标程序,并更改子进程的/dev/tty以引用另一个位置,但我不知道如何更改

它使用一种称为伪TTY的东西,这种东西看起来像TTY,但允许编程控制。见例