Linux
如何編寫系統登錄測試?
我編寫了一個呼叫
bash
命令的 Python CGI 腳本,它需要測試主機上是否成功登錄。我該如何為此編寫測試?
例如,我可以創建一個
bash
腳本來針對主機上的註冊使用者測試給定的使用者名和密碼組合嗎?
使用 PAM 是最好的解決方案。您可以編寫小的 C 程式碼,或者安裝 python-pam 包並使用 python-pam 包附帶的 python 腳本。看
/usr/share/doc/python-pam/examples/pamtest.py
測試使用者是否可以登錄的正確方法是實際以該使用者身份登錄。
所以我推薦的是讓 CGI 腳本
expect
用來執行su
,傳遞密碼並執行必須執行的命令。這是一個執行此操作的期望腳本的草稿(警告:絕對未經測試,而且我對期望不流利)。替換為使用者名、密碼和命令(我寫的地方bob
,swordfish
和somecommand
);一定要正確引用。spawn "/bin/su" "bob" expect "Password:" send "swordfish\r" expect "^\\$" send "somecommand" expect -re "^\\$" send "exit\r" expect eof
如果你真的不想通過一層執行命令
su
(例如因為你所做的事情必須由CGI程序自己執行),那麼使用expect執行命令true
並檢查返回狀態是否為0。另一種方法是通過Python 的 PAM 綁定直接在您的應用程序中使用PAM。