1. 程式人生 > >Shell 輸入密碼不顯示文字

Shell 輸入密碼不顯示文字

最近有一個需求,要寫個shell,中間需要讓使用者輸入一個密碼,這時候不可以讓使用者輸入的密碼顯示在螢幕上。

本來這個需求一開始沒想到該如何實現,後來突然想到,之前做審計系統測試的時候,用到過這個命令:

stty -echo

這一條命令敲下去,使用者後續的輸入都不會有回顯。

受到這一個點啟發,找到了靈感。

完整的需求是這樣的:

執行shell,讓使用者輸入一個長度不超過 N 位的密碼(這裡假設N = 8),超過長度要報錯,不超過則將密碼進行某種運算,儲存起來(這裡假設為計算MD5):

#!/bin/bash

var=""

while [ ${#var} -eq 0 ]
do
    stty -echo
    echo "Please Input password(8 Bit max):"
    read var

    if [ ${#var} -gt 8 ]; then
        echo "Psswd too long, 8 Bit Only."; var=""
    fi
    done

stty echo
echo $var | md5sum | awk '{print $1}'

哈哈,就是這個樣子↑