1. ホーム
  2. linux

シェルスクリプトからpasswdコマンドを使用する

2023-09-30 01:19:41

質問

新しいユーザを自動的に追加し、そのパスワードを更新するシェルスクリプトを書いています。新しいパスワードのために対話的にプロンプトを表示する代わりに、passwd がシェル スクリプトから読み取るようにする方法がわかりません。私のコードは以下のとおりです。

adduser $1
パスワド $1
$2
$2

どのように解決するのですか?

を参照してください。 man 1 passwd "です。

   --stdin
          This option is used to indicate that passwd should read the new
          password from standard input, which can be a pipe.

つまり、あなたの場合

adduser "$1"
echo "$2" | passwd "$1" --stdin

[ 更新 ]コメントでいくつかの問題が提起されました。

あなたの passwd コマンドには --stdin オプションがない場合は chpasswd ユーティリティの代わりに アッショウリー .

bash以外のシェルを使っている場合、"echo"は組み込みのコマンドではないかもしれません。 を呼び出します。 /bin/echo . これは、パスワードがプロセステーブルに表示されるため、安全ではありません。 のようなツールで見ることができます。 ps .

この場合、他のスクリプト言語を使用する必要があります。以下はPerlでの例です。

#!/usr/bin/perl -w
open my $pipe, '|chpasswd' or die "can't open pipe: $!";
print {$pipe} "$username:$password";
close $pipe