歡迎您光臨本站 註冊首頁

linux批量添加用戶帳號

←手機掃碼閱讀     火星人 @ 2014-03-03 , reply:0

今天遇到這樣一個試題,希望求解各位大哥,望大家多多指點啊!!!!
試題的意思如下:
    1、要求交互操作,用戶輸入一個數字,小於100的,這個數字代表要建立多少個賬號;
    2、互動式操作,讓用戶輸入一串用於批量添加的帳號的前綴;
    3、添加后的帳號名的規則是有前綴加數字組成,小於10的前面加零,例如:前綴06,大於或等於10的就不用加0了;
    4、互動式設置添加帳號的過期時間;
    5、互動式設置要添加帳號的密碼。
這些要在shell腳本實現!

#!/usr/bin/expect
# 導入 Expect 類庫
set hostname
# 設置操作的遠程主機,$argv 類似 Shell 函數中的接收參數
# 則表示第一個接收參數 , 例如 expectExample.sh host1
set username
# 同上,第二個接收參數為登陸用戶名
set passwd
# 同上,第三個接收參數為登陸用戶密碼
set timeout 60
# 設置等待超時為 60 秒
spawn  ssh $username@$hostname
# 使用 spawn 命令來激活 ssh 程序,模擬終端的輸出將能夠被 Expect 所讀取,模擬終端也能從 send 輸入到遠程主機
expect {
           "yes/no" {send "yes ";exp_continue}
           "Password:" {send "$passwd ";}
}
#Expect 語句等待遠程主機的字元串匹配,當匹配到了「yes/no」
#則執行後面的操作 .expect 搜索模式"*password:",其中 * 允許匹配
# 任意輸入,所以對於避免指定所有細節而言是非常有效的。如果遠程主機沒有 action,
#所以 Expect 檢測到該模式后就繼續運行。  一旦接收到提示后,下一行就就把密碼送給當前進程。
send "sudo -s\r"
expect  "Password:"  {send "$newpasswd\r"}
# 執行 sudo 用戶角色轉換操作

send "copy /etc/sudoers /usr/local/etcsudoers\r"
# 執行實際運維操作

send "exit\r "
send "exit\r "
expect eof {exit 1}
spawn  激活一個 Unix 程序來進行互動式的運行 .
spawn ssh 192.168.1.2  
send  向進程發送字元串  send "sudo -s\r"  
set  給 Expect 腳本中的變數賦值  set username 「joe」  
expect  等待進程收到的遠程主機的輸出,並匹配對應的字元串 , 一旦匹配,執行後續的操作  expect { "yes/no" send "yes" ;}


[火星人 ] linux批量添加用戶帳號已經有302次圍觀

http://coctec.com/docs/service/show-post-729.html