创建需要用户交互的 shell 脚本

创建需要用户交互的 shell 脚本

我怎样才能创建一个包含一些需要用户输入的命令的 shell 脚本,例如

#!/bin/sh
useradd test
passwd test

passwd 命令需要一些输入(密码)。我可以通过 shell 脚本提供此输入吗?谢谢!

答案1

passwd命令专门针对此问题进行了保护(我相信这是为了减少它在暴力密码猜测攻击中的实用性)。它只从连接的终端读取输入,而不是从通常的 STDIN 读取输入 - 这使得使用它来编写密码更改脚本变得困难。

但请参阅手册页usermod

答案2

通常不会,因为大多数需要密码的程序不会读取标准输入就像常规 UNIX 进程一样。相反,它们将尝试从控制 tty 读取密码。

如果你想要编写这样的应用程序脚本,你必须使用类似预计

答案3

例子:

$ ./input.sh foo bar baz

来源:

#!/bin/bash
# input.sh

echo $0       # input.sh
echo $1       # foo
echo $3       # baz

答案4

使用 expect。一个例子这里

#!/usr/bin/expect
set username [lindex $argv 0]
set newpass [lindex $argv 1]
spawn passwd $username
expect {*password:}
send "$newpass\r"
expect {*password:}
send "$newpass\r" 

相关内容