Ví dụ getpass Python

chắc chắn chính(). mật khẩu = getpass() nxos1 = { 'máy chủ'. 'nxos1. công nghệ twb. com', 'tên người dùng'. 'lớp học', 'mật khẩu'. mật khẩu, 'vận chuyển'. 'https', 'cổng'. 8443, } nxos2 = { # noqa 'máy chủ'. 'nxos2. công nghệ twb. com', 'tên người dùng'. 'lớp học', 'mật khẩu'. mật khẩu, 'vận chuyển'. 'https', 'cổng'. 8443, } config_commands = ['giao diện Loopback99', 'địa chỉ ip 172. 31. 254. 99/32'] cho thiết bị trong (nxos1,). nxapi_conn = Thiết bị(**thiết bị) nxapi_conn. đầu ra config_list(config_commands) = nxapi_conn. show('hiển thị giao diện chạy loopback99', raw_text=True) print(xuất)

Mô-đun Python getpass cung cấp chức năng nhập mật khẩu di động và cho phép bạn chấp nhận một chuỗi đầu vào trong giao diện dòng lệnh (CLI) mà không cần nhập chuỗi để hiển thị (lặp lại) trong giao diện

Mô-đun getpass cũng bao gồm hàm

getpass.getpass(prompt='Password: ', stream='None')
0 để truy xuất tên người dùng từ các biến môi trường có liên quan

Trong hướng dẫn getpass Python này, tôi sẽ chỉ cho bạn cách cài đặt getpass và sử dụng chức năng, sau đó giải thích một số khái niệm cơ bản và Câu hỏi thường gặp

Làm cách nào để cài đặt Python Getpass?

Mô-đun getpass là một phần của Thư viện tiêu chuẩn Python, được lưu trữ trong danh mục 'Dịch vụ hệ điều hành chung'

Điều này có nghĩa là rất có thể bạn đã có nó trong bản cài đặt Python của mình và sẽ không cần cài đặt nó nữa. Tuy nhiên, nó không phải là một chức năng tích hợp nên bạn sẽ cần phải nhập nó để sử dụng nó

Như thế này

import getpass

Cú pháp & Ví dụ

Đây là cú pháp và ví dụ để minh họa cách sử dụng mô-đun Python getpass

getpass.getpass(prompt='Password: ', stream='None')

getpass.getpass(prompt='Password: ', stream='None')
5 là một đối số từ khóa tùy chọn cho những gì người dùng sẽ thấy trong giao diện dòng lệnh để nhắc nhập mật khẩu của họ. Giá trị mặc định là
getpass.getpass(prompt='Password: ', stream='None')
6 sẽ hiển thị nếu bạn không đưa ra lời nhắc thay thế

Đối số từ khóa

getpass.getpass(prompt='Password: ', stream='None')
7 là để bạn chỉ định luồng mà lời nhắc được ghi vào (chỉ được sử dụng trên Unix). Nếu bạn không chỉ định một luồng thay thế, giá trị mặc định của
getpass.getpass(prompt='Password: ', stream='None')
8 sẽ được chuyển và hàm
getpass.getpass(prompt='Password: ', stream='None')
9 sẽ chọn luồng phù hợp nhất cho bạn

Thí dụ

________số 8_______

đầu ra

Đoạn mã nhắc người dùng nhập các giá trị tại hai điểm khác nhau ‘

import getpass

users = {
   'nick': '12345'
}

usr = input('Username: ')

if usr in users:
    passwrd = getpass.getpass('Enter Password: ')
    if passwrd == users[usr]:
        print('Access approved')
    else:
        print('Incorrect password, access denied')
else:
    print(f'User not found: {usr}')
0‘ và ‘
import getpass

users = {
   'nick': '12345'
}

usr = input('Username: ')

if usr in users:
    passwrd = getpass.getpass('Enter Password: ')
    if passwrd == users[usr]:
        print('Access approved')
    else:
        print('Incorrect password, access denied')
else:
    print(f'User not found: {usr}')
1’ và đầu ra mã sẽ khác nhau tùy thuộc vào đầu vào

Username Entered / Password Entered : Output
nick / 1234 : Access approved
nick / [anything other than ‘1234’] : Incorrect password, access denied
[anything other than ‘nick’] / n/a : User not found: {[user entered]} 

Giải trình

Trong ví dụ này, chúng tôi bắt đầu với một từ điển có tên người dùng được ghi lại và mật khẩu tương ứng

❗ Chú ý. Mật khẩu không nên được lưu trữ dưới dạng văn bản gốc trong cơ sở dữ liệu như thế này nhưng đây chỉ là một ví dụ minh họa nhanh)

Đầu tiên, chúng tôi yêu cầu tên người dùng bằng cách sử dụng đầu vào tiêu chuẩn (tôi sẽ thảo luận về một giải pháp thay thế cho điều này bên dưới) và sau đó nếu tên người dùng được tìm thấy trong từ điển, chúng tôi sẽ yêu cầu mật khẩu tương ứng bằng cách sử dụng chức năng

getpass.getpass(prompt='Password: ', stream='None')
9

💡 Lưu ý. chúng tôi đã sử dụng tham số

getpass.getpass(prompt='Password: ', stream='None')
5 tùy chọn để nhập dấu nhắc mật khẩu tùy chỉnh của chúng tôi
import getpass

users = {
   'nick': '12345'
}

usr = input('Username: ')

if usr in users:
    passwrd = getpass.getpass('Enter Password: ')
    if passwrd == users[usr]:
        print('Access approved')
    else:
        print('Incorrect password, access denied')
else:
    print(f'User not found: {usr}')
4

Sau đó, chương trình sẽ kiểm tra xem mật khẩu đã nhập có khớp với mật khẩu tương ứng với người dùng như được ghi trong từ điển hay không

Nếu mật khẩu khớp với tên người dùng thì thông báo thành công sẽ được in nhưng nếu mật khẩu không chính xác thì thông báo lỗi sẽ được in

Trường hợp sử dụng

Mô-đun getpass chỉ để chấp nhận một chuỗi trong CLI (Giao diện dòng lệnh) mà không có chuỗi đó dội lại vào CLI khi nó được nhập

Đây có thể là bước bảo mật cơ bản đầu tiên cho bất kỳ ứng dụng CLI nào. Đây không phải là một giải pháp bảo mật đầy đủ, vì vậy nếu cần bảo vệ dữ liệu nhạy cảm, bạn nên triển khai các lớp bảo mật khác

Mô-đun được thiết kế để chấp nhận mật khẩu nhưng bạn có thể sử dụng nó để chấp nhận bất kỳ chuỗi nào bạn muốn ẩn, chẳng hạn như câu trả lời bí mật cho một bài kiểm tra

GetPassCảnh báo

Nếu vì lý do nào đó, chức năng

getpass.getpass(prompt='Password: ', stream='None')
9 không thể ngăn CLI lặp lại mật khẩu, thì
import getpass

users = {
   'nick': '12345'
}

usr = input('Username: ')

if usr in users:
    passwrd = getpass.getpass('Enter Password: ')
    if passwrd == users[usr]:
        print('Access approved')
    else:
        print('Incorrect password, access denied')
else:
    print(f'User not found: {usr}')
7 sẽ được kích hoạt để cảnh báo người dùng

Điều đó sẽ trông giống như thế này

GetPassWarning: Can not control echo on the terminal.
passwd = fallback_getpass(prompt, stream)
Warning: Password input may be echoed.

Hàm getuser()

Hàm

import getpass

users = {
   'nick': '12345'
}

usr = input('Username: ')

if usr in users:
    passwrd = getpass.getpass('Enter Password: ')
    if passwrd == users[usr]:
        print('Access approved')
    else:
        print('Incorrect password, access denied')
else:
    print(f'User not found: {usr}')
8 là hàm thứ hai có sẵn trong mô-đun getpass. Nó được sử dụng để lấy tên người dùng từ một trong bốn biến môi trường hiện có

  • Username Entered / Password Entered : Output
    nick / 1234 : Access approved
    nick / [anything other than ‘1234’] : Incorrect password, access denied
    [anything other than ‘nick’] / n/a : User not found: {[user entered]} 
    0
  • Username Entered / Password Entered : Output
    nick / 1234 : Access approved
    nick / [anything other than ‘1234’] : Incorrect password, access denied
    [anything other than ‘nick’] / n/a : User not found: {[user entered]} 
    1
  • Username Entered / Password Entered : Output
    nick / 1234 : Access approved
    nick / [anything other than ‘1234’] : Incorrect password, access denied
    [anything other than ‘nick’] / n/a : User not found: {[user entered]} 
    2
  • Username Entered / Password Entered : Output
    nick / 1234 : Access approved
    nick / [anything other than ‘1234’] : Incorrect password, access denied
    [anything other than ‘nick’] / n/a : User not found: {[user entered]} 
    3

Nếu không có biến môi trường nào chứa chuỗi tên người dùng, thay vào đó, hàm sẽ cố gắng lấy tên người dùng từ mô-đun

Username Entered / Password Entered : Output
nick / 1234 : Access approved
nick / [anything other than ‘1234’] : Incorrect password, access denied
[anything other than ‘nick’] / n/a : User not found: {[user entered]} 
4
Username Entered / Password Entered : Output
nick / 1234 : Access approved
nick / [anything other than ‘1234’] : Incorrect password, access denied
[anything other than ‘nick’] / n/a : User not found: {[user entered]} 
5

Đây là một ví dụ về

import getpass

users = {
   'nick': '12345'
}

usr = input('Username: ')

if usr in users:
    passwrd = getpass.getpass('Enter Password: ')
    if passwrd == users[usr]:
        print('Access approved')
    else:
        print('Incorrect password, access denied')
else:
    print(f'User not found: {usr}')
8 đang hoạt động

# USER environment variable already set by the os
# os.environ['USER'] = 'nick'

import getpass

users = {
   'nick': '12345'
}

usr = getpass.getuser()

if usr in users:
    print(f'Welcome back, {usr}')

đầu ra

Welcome back, nick

Giải trình

Trong mẫu mã này, hàm

import getpass

users = {
   'nick': '12345'
}

usr = input('Username: ')

if usr in users:
    passwrd = getpass.getpass('Enter Password: ')
    if passwrd == users[usr]:
        print('Access approved')
    else:
        print('Incorrect password, access denied')
else:
    print(f'User not found: {usr}')
8 cố gắng trích xuất tên người dùng và sau đó chúng tôi kiểm tra xem tên người dùng đó có trong lệnh của chúng tôi không. Nếu đúng như vậy thì chúng tôi in thông báo
Username Entered / Password Entered : Output
nick / 1234 : Access approved
nick / [anything other than ‘1234’] : Incorrect password, access denied
[anything other than ‘nick’] / n/a : User not found: {[user entered]} 
8


Câu hỏi thường gặp Getpass

Điều đó kết thúc lời giải thích cho mô-đun getpass. Trong phần còn lại của bài viết, tôi sẽ xem qua một số Câu hỏi thường gặp liên quan và thông tin cơ bản

Luồng trong Python Getpass là gì?

Luồng trong máy tính là thứ có thể truyền dữ liệu giữa hai điểm cuối; . ’

Ba luồng đầu vào/đầu ra (I/O) tiêu chuẩn là

GetPassWarning: Can not control echo on the terminal.
passwd = fallback_getpass(prompt, stream)
Warning: Password input may be echoed.
2 (đầu vào tiêu chuẩn),
GetPassWarning: Can not control echo on the terminal.
passwd = fallback_getpass(prompt, stream)
Warning: Password input may be echoed.
3 (đầu ra tiêu chuẩn) và
GetPassWarning: Can not control echo on the terminal.
passwd = fallback_getpass(prompt, stream)
Warning: Password input may be echoed.
4 (lỗi tiêu chuẩn)

Ban đầu đây là những kết nối vật lý nhưng trong máy tính và phần mềm hiện đại, chúng được trừu tượng hóa.

Luồng giống như tệp và bạn có thể đọc/ghi dữ liệu từ luồng giống như bạn có thể làm với tệp. Chúng có liên quan đến getpass vì mô-đun sẽ cố gắng sử dụng các luồng thay thế để đọc và ghi dữ liệu nếu (các) luồng mặc định không khả dụng

Theo tài liệu getpass

Trên Unix, lời nhắc được ghi vào luồng đối tượng giống như tệp bằng cách sử dụng trình xử lý lỗi thay thế nếu cần. luồng mặc định cho thiết bị đầu cuối điều khiển (/ dev/tty) hoặc nếu điều đó không có sẵn cho sys. stderr (đối số này bị bỏ qua trên Windows)

Nếu đầu vào không có tiếng vang không khả dụng

getpass.getpass(prompt='Password: ', stream='None')
9 quay lại in thông báo cảnh báo để phát trực tuyến và đọc từ hệ thống. stdin và phát hành một

Một tty trong Python là gì?

Ban đầu,

GetPassWarning: Can not control echo on the terminal.
passwd = fallback_getpass(prompt, stream)
Warning: Password input may be echoed.
8 là tên viết tắt của thiết bị vật lý 'máy đánh chữ từ xa' kết nối máy đánh chữ với máy in băng từ xa

Ngày nay,

GetPassWarning: Can not control echo on the terminal.
passwd = fallback_getpass(prompt, stream)
Warning: Password input may be echoed.
9 được sử dụng để mô tả bất kỳ môi trường nhập/xuất văn bản nào có thể là vật lý hoặc trong phần mềm và gần tương đương với thuật ngữ 'thiết bị đầu cuối'. ’

'Bảng điều khiển' là phiên bản vật lý của thiết bị đầu cuối

'Trình giả lập thiết bị đầu cuối' là phiên bản phần mềm của thiết bị đầu cuối vật lý. Đây có lẽ là những gì bạn đã quen làm việc trên máy tính của mình

'Shell' là trình thông dịch dòng lệnh chạy trên thiết bị đầu cuối

Điều này có thể giúp phân biệt các thuật ngữ này nhưng lưu ý rằng chúng thường được sử dụng thay thế cho nhau

getpass trong Python là gì?

Getpass là một mô-đun để che dấu đầu vào mật khẩu để nó không bị lặp lại giao diện dòng lệnh khi nó đang được nhập. Mô-đun này cũng cung cấp hỗ trợ nhắc nhập mật khẩu và truy xuất tên người dùng của người dùng hiện tại

Getpass có trong Thư viện chuẩn Python không?

Vâng, đúng vậy. Tuy nhiên, nó không phải là một chức năng tích hợp nên bạn vẫn cần nhập nó để sử dụng nó trong mã của mình. Như thế này.

# USER environment variable already set by the os
# os.environ['USER'] = 'nick'

import getpass

users = {
   'nick': '12345'
}

usr = getpass.getuser()

if usr in users:
    print(f'Welcome back, {usr}')
0

Làm cách nào để sử dụng getpass trong Python?

Sử dụng hàm getpass() để nhắc mật khẩu người dùng . Dữ liệu đầu vào được mặc định là “Mật khẩu. ” được trả lại cho người gọi dưới dạng một chuỗi. Ở đây, không có lời nhắc nào được cung cấp bởi người gọi. The getpass() function is used to prompt to users using the string prompt and reads the input from the user as Password. The input read defaults to “Password: ” is returned to the caller as a string. Here, no prompt is provided by the caller.

Thư viện Getpass trong Python là gì?

Mô-đun getpass cung cấp cách nhập mật khẩu độc lập với nền tảng trong chương trình dòng lệnh , như Ví dụ 2-25 cho thấy. getpass(prompt) in chuỗi dấu nhắc, tắt tiếng vang bàn phím và đọc mật khẩu. Nếu đối số dấu nhắc bị bỏ qua, nó sẽ in " Mật khẩu. “.

Làm cách nào để viết mật khẩu bằng Python?

Điều kiện chính để xác thực mật khẩu. .
Tối thiểu 8 ký tự
Bảng chữ cái phải nằm trong khoảng từ [a-z]
Ít nhất một bảng chữ cái phải là Chữ hoa [A-Z]
Ít nhất 1 số hoặc chữ số trong khoảng [0-9]
Ít nhất 1 ký tự từ [ _ hoặc @ hoặc $ ]

Làm cách nào để cài đặt mô-đun getpass trong Python?

Ví dụ về mô-đun getpass Python .
mô-đun getpass không có dấu nhắc. Mô-đun Getpass
mô-đun getpass với dấu nhắc tùy chỉnh. nhập địa điểm getpass = getpass. getpass(prompt = 'Địa điểm yêu thích của bạn để đi là gì?') if place == 'Satara'. in ('Tất nhiên. ') khác. print('Đó là đâu?') Đầu ra. .
mô-đun getpass với các luồng khác