キーボード入力の代わりにスクリプト機能を使用する

キーボード入力の代わりにスクリプト機能を使用する

ユーザーパスワードを変更するシェルスクリプトを作成しています。コマンドを試しましたが、passwdコマンドは常に古いパスワードと新しいパスワードを要求します。私のスクリプトはそのパスワードを受け入れません。

古いパスワードと新しいパスワードが変数などから来るシェルスクリプトでユーザーパスワードを変更する方法はありますか?

答え1

#!/usr/bin/expect -f
spawn passwd username
expect "New password:"
send -- "user-password\r"
expect "Retype new password:"
send -- "user-password\r"
expect eof

テスト

私はそれを別の名前で保存し、script.expスクリプトを実行したときにこれが私のコンピュータに表示される出力です。

expect script.exp
spawn passwd ramesh
Changing password for user ramesh.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

パスワードを入力するためにキーボードを使用する必要はありません。もちろん、この機能を要件に合わせて変更し、必要な方法で使用できます。

関連情報