如何编写处理交互式输入的shell脚本?

时间:2015-02-04 21:05:11

标签: shell unix expect

我有一个带2个参数的命令。

当我手动运行命令时,我这样做:

cmd -i xyz.dat  
hit enter 
enter password in the prompt 
hit enter
confirm password

我的脚本需要执行上述操作,而不希望用户输入密码。我可以对文件中的密码进行硬编码,但是在执行shell脚本时需要一种成功运行此命令的方法。

截至2月7日, 我希望在我的AIX上安装。当我在命令提示符下键入expect时,提示符更改为期望1.1>操作系统是64位AIX

我已按照以下评论中提到的说明操作,但我一直收到错误 - 无法执行命令;没有这样的文件或目录“?我能够从运行脚本的同一目录手动运行此命令。除此之外,我已经给出了命令的完整路径和 文件。

我正在粘贴另一个程序,我尝试使用root密码,如下所示:我在运行测试程序时收到相同的错误消息。我怀疑这是否与报价有关。

#!/bin/bash
set timeout 20
spawn "su"
expect "Password:" { send:"temp123\r" }
interact

有人可以帮我解决这个错误吗?

1 个答案:

答案 0 :(得分:3)

听起来你想要使用expect。 Here是一个包含一些示例的页面。

因此,对于您的命令,您需要以下内容:

#!/usr/bin/expect

set timeout 20

spawn "cmd -i xyz.dat"

expect "<your password prompt" { send "<your password>\r" }
expect "<your password confirmation prompt" { send "<your password>\r" }

interact