close

要在Unix/linux 裡面自動更改密碼,由於更改密碼passwd是互動式指令,
故透過Born Shell Script 的話,就是必須要用Expect 來達成。
而Python 也有類似的expect  ,叫pexpect (這麼模組是要另外抓下來的)
抓下來之後,編譯完Import 進來就可以用了!
版主 "您北" 以Python + pecpect 實作一個自動輸入密碼的模組,此模組可以單獨使用
或獨立成為另一個模組以供呼叫,以下就來看看是怎麼作的!

 


#!/usr/local/bin/python

import optparse
import pexpect 
#  記得要Import pexpect
import sys 
import os

def main():
        p = optparse.OptionParser(description="Auto change password , Program Author : ES/Fwwang ",
        version="%prog Version:1.0 , 2009/05/21 BY ES/Fwwang",
        usage="%prog -a [accountname] -p [password]")
        p.add_option('--account', '-a',help="Acount  ")
        p.add_option('--passwd', '-p',help="Password ")
        options, arguments = p.parse_args()
        acc=options.account
        pas=options.passwd

        if  len(arguments) >= 1:
                p.print_usage()
                sys.exit(0)
        if  options.account == None :
                p.print_usage()
                sys.exit(0)
        if  options.passwd ==  None :
                p.print_usage()
                sys.exit(0)

       
# 以下是重點
        foo=pexpect.spawn('passwd %s' % acc )
        foo.expect('assword:')
        foo.sendline('%s' % pas)
        foo.expect('assword:')
        foo.sendline('%s' % pas)
        foo.interact()

#以上是重點

if __name__ == '__main__':
        main()


真正重點是中間藍色字體部分,,而要更改的帳號與密碼是由程式讀入外部參數而來,
舉例來說:把以上程式存成auto_passwd.py ,要更改的帳號是user01 , 密碼是abcdefg
Command 就這麼下囉: 

#  auto_passwd.py -a user01  -p abcdefg

非常適合放在自動化大量開立帳號裡面使用,不需更改原本的開立帳號的程式,只要呼叫本程式即可,方便實用!
關於如何自動化產生一組亂數密碼,將會在另外一篇文章說明

arrow
arrow
    全站熱搜

    fevin 發表在 痞客邦 留言(0) 人氣()