Linux

如何編寫系統登錄測試?

  • September 2, 2014

我編寫了一個呼叫bash命令的 Python CGI 腳本,它需要測試主機上是否成功登錄。

我該如何為此編寫測試?

例如,我可以創建一個bash腳本來針對主機上的註冊使用者測試給定的使用者名和密碼組合嗎?

使用 PAM 是最好的解決方案。您可以編寫小的 C 程式碼,或者安裝 python-pam 包並使用 python-pam 包附帶的 python 腳本。看/usr/share/doc/python-pam/examples/pamtest.py

測試使用者是否可以登錄的正確方法是實際以該使用者身份登錄。

所以我推薦的是讓 CGI 腳本expect用來執行su,傳遞密碼並執行必須執行的命令。這是一個執行此操作的期望腳本的草稿(警告:絕對未經測試,而且我對期望不流利)。替換為使用者名、密碼和命令(我寫的地方bobswordfishsomecommand);一定要正確引用。

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

引用自:https://unix.stackexchange.com/questions/28812