2017-05-15 86 views
0

Solaris 11では、expectパッケージが含まれており、Linuxからは自動化に非常に便利です。Solaris 11のexpectコマンド

約10人のユーザーを作成し、スクリプトによってユーザーのパスワードを設定しようとしています。

#!/usr/bin/expect 
spawn /usr/bin/passwd user1 
expect "New password: \n" 
send "Userpass123$\r" 
expect "Re-enter new Password: \n" 
send "Userpass123$\r" 

フェッチで私を助けてください

JUDI-DEV-01# time /tmp/123 
spawn /usr/bin/passwd user1 
New Password: 
Re-enter new Password: 
real 0m20.023s 
user 0m0.005s 
sys  0m0.005s 
JUDI-DEV-01# 

以下の出力を検索し、パスワードが正しく設定されているが、その単一のユーザーのパスワードを設定するために、ほぼ20秒を取りますユーザーID、UID、GID、ホームディレクトリをファイルから取得してユーザーアカウントを作成する サンプルファイルのデータは/ tmp/userlist

user1:150:20:App User1:/export/home/user1:/bin/ksh 
user2:151:20:App User2:/export/home/user2:/bin/ksh 
user3:152:20:App User3:/export/home/user3:/bin/ksh 

dbuser1:201:30:db user1:/export/home/dbuser1:/usr/bin/ksh 
dbuser2:202:30:db user1:/export/home/dbuser2:/usr/bin/ksh 

私はシェルスクリプトで別の変数に値を分離するために知っている、それはで動作する二度目のパスワードを送信した後

答えて

2

を期待する方法がわからない、expect eofを追加します。これにより、プログラムの完成が保証されます。

send "Userpass123$\r" 
expect eof 

は、あなたが使用することができ、値を分割するにはsplitコマンド

% split "dbuser1:201:30:db user1:/export/home/dbuser1:/usr/bin/ksh" : 
dbuser1 201 30 {db user1} /export/home/dbuser1 /usr/bin/ksh 
% 
関連する問題