#pginfo(1 1JB6aUIfxj6 admin 3 none none 3 all all 1 1JB6aUIfxj6 admin 1 ) autopasswdで悩んだ RedHat Linuxでユーザを追加して有効にするのんに autopasswdなる便利なツールがあることを知った。 そやけど、これRedHat9.0とかやったら動かんのんです。(ーー;) で、調べてみたら動いたのでメモっておこう。
autopasswdは/usr/bin以下にある。 単純にテキストファイルで中身はExpectスクリプトファイル OSに添付しているexpectパッケージをインストールすると expect系のスクリプティングが出来るようになって その一つとしてautopasswd(スクリプト…と言うた方が正しいな)が提供される。
autopasswdの変更 よーは、RedHatのpasswdコマンドを実行しているだけに過ぎないのやけど このコマンドが変更された様子?で、色んな人が悩んでたみたい。 やけど、以下のように変更する事で問題なく実行でける!
#!/usr/bin/expect -f # wrapper to make passwd(1) be non-interactive # username is passed as 1st arg, passwd as 2nd
set password [lindex $argv 1] set username [lindex $argv 0] ←追加 spawn passwd –stdin [lindex $argv 0] ←変更 #expect “password:” ←コメントアウト expect “password for user $username.” ←追加 send – “$password\r” #expect “password:” ←コメントアウト #send – “$password\r” ←コメントアウト expect eof
じゃじゃぁぁぁん ウマく行ったかな?
ついでに… ついでにユーザ登録と削除を作成してみた。 元々基本形があったのでちょいと手を入れた感じ ユーザ名とパスワード記述ファイルは No,Username,Password ですわ。 で、以下スクリプト
u.sh
#!/bin/sh ### # Usage if [ $# -ne 1 ]; then
echo "Usage: $0 'filename'" exit 1
else if [ -f $1 ]; then
echo "reading '$1' file...." echo " " for data in `cat $1` do uname=`echo $data | awk 'BEGIN {FS=",";} {print $2;}'` upass=`echo $data | awk 'BEGIN { FS=",";}{print $3;}'` if ( grep ^$uname /etc/passwd 1>/dev/null 2>&1); then echo "$uname exists..."; else echo "creating user--$uname & $upass"; useradd $uname; autopasswd $uname $upass; fi; done;
fi fi
d.sh #!/bin/sh ### # Usage if [ $# -ne 1 ]; then
echo "Usage:$0 'filename'" exit 1
else if [ -f $1 ]; then
echo "reading '$1'file...." echo " " for data in `cat $1` do uname=`echo $data| awk 'BEGIN { FS=",";} {print $2;}'` upass=`echo $data | awk'BEGIN { FS=",";} {print $3;}'` echo "deleteing user --$uname & $upass"; userdel $uname; done;
fi fi