将终端的手动输入替换为bash中的文件或文本输入

时间:2018-06-20 18:13:54

标签: bash cron

我试图通过管道或文件将密码作为输入到bash脚本的输入,该脚本需要从命令行输入,因此出现以下错误:  “无法从环境或密钥库获取密码,而stdin不是tty”。有什么方法可以用文件或文本输入替换标准输入?

2 个答案:

答案 0 :(得分:0)

您应该能够使用“期望”将文本传递给正在从非tty读取的pgm。

此页面可能对您有用:https://likegeeks.com/expect-command/

答案 1 :(得分:0)

期望程序输入密码

#!/usr/bin/expect

spawn su $1
expect "Password:" #expects the keyword "Password:"
send "$2\r";

interact

运行上述程序时输出

smilyface@localhost $ ./su.exp guest guest
spawn su guest
Password:
guest@localhost $