がらくたネット


moved:autopassword

#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