expect交互式建立帳號密碼

這個腳本是我在創建samba用戶的時候用到的,一開始我是一步一步的操做,後來嫌麻煩了,就寫了這個腳本,也學習了一下expect。shell

#!/usr/bin/expect
set user [lindex $argv 0]
set pass [lindex $argv 1]學習

spawn sed -i "s/123,/&$user,/g" /etc/samba/smb.conf  將新用戶添加到smb配置文件
spawn useradd -s /bin/sh -d /home/$user $user  創建系統用戶
expect "*#"
spawn passwd $user  建立密碼
expect "*password:"
send "$pass\r"
expect "*password:"
send "$pass\r"
spawn smbpasswd -a $user  添加用戶到sbm
expect "*password:"
send "$pass\r"
expect "*password:"
send "$pass\r"
interactspa

註釋:進程

spawn: 後面加上須要執行的shell 命令變量

expect: 只有spawn 執行的命令結果纔會被expect 捕捉到,由於spawn 會啓sed

動一個進程,只有這個進程的相關信息纔會被捕捉到,主要包括:標準輸入的提
示信息,eof 和timeout。
send 和send_user:send 會將expect 腳本中須要的信息發送給spawn 啓動
的那個進程,而send_user 只是回顯用戶發出的信息,相似於shell 中的echo 而
已。
set 腳本傳參,expect是經過set <變量名稱> [lindex $argv <param index>]
相關文章
相關標籤/搜索