在我的shell脚本中,我正在运行一个命令,它要求我输入.
如何自动为命令提供所需的输入?
例如:
$cat test.sh
ssh-copy-id tester@10.1.2.3
Run Code Online (Sandbox Code Playgroud)
运行test.sh时:
首先,它会问:
Are you sure you want to continue connecting (yes/no)?
然后,它会要求我输入密码:
tester@10.1.2.3's password:
有没有办法自动输入?
Mar*_*hen 35
对于简单输入,如两个提示和两个相应的固定响应,您还可以使用"here document",其语法如下所示:
test.sh <<!
y
pasword
!
Run Code Online (Sandbox Code Playgroud)
<<前缀为模式,在本例中为'!'.从该模式开始的所有行都被解释为标准输入.这种方法类似于将多行回显传递给ssh的建议,除了它保存了echo命令的fork/exec,我发现它更具可读性.另一个优点是它使用内置的shell功能,因此它不依赖于期望.
肯定有...使用spawn,expect和send命令:
spawn test.sh
expect "Are you sure you want to continue connecting (yes/no)?"
send "yes"
Run Code Online (Sandbox Code Playgroud)
Stack Overflow上有更多示例,请参阅: 在bash脚本中帮助Expect
您可能需要先安装这些命令,具体取决于您的系统.
| 归档时间: |
|
| 查看次数: |
93340 次 |
| 最近记录: |