2012-07-09 41 views
5

Tôi muốn thực thi một tiến trình con trong python, và tiến trình con yêu cầu một đối số để chỉ định mật khẩu. Theo mặc định, tất cả những người có thể đăng nhập máy này có thể nhận được mật khẩu với tiện ích ps khi tiến trình con của tôi đang chạy.python subprocess.Popen ẩn thực "tên dispaly"

Và tôi biết Popen có thông số __executable__, có thể ẩn tên chương trình thực nhưng không thể ẩn đối số mật khẩu của quy trình con.

Tôi làm cách nào để ẩn mật khẩu của mình?

PS: Tôi đang chạy trên Linux.

+1

Bạn đang chạy hệ điều hành nào? – hamstergene

+0

cũng lệnh subprocess là gì: Có phải cái gì bạn có thể kiểm soát cách nó xử lý các đối số của nó hay nó là một lệnh hiện tại mà bạn không có quyền kiểm soát? – Duncan

+0

@hamstergene linux – bones7456

Trả lời

1

Tôi không nghĩ rằng bạn có thể làm điều đó cho subprocess, nhưng có một thư viện để làm điều đó từ subprocess: http://code.google.com/p/py-setproctitle/

Phương pháp này là cụ thể cho từng hệ điều hành; một số hệ thống không hỗ trợ điều đó. Nếu có thể, hãy cung cấp mật khẩu cho quy trình con bằng các phương tiện khác (ví dụ: thông qua đường ống stdin).

+1

Sẽ không phải là vẫn còn để lại một cửa sổ nơi mật khẩu được tiếp xúc (giữa cha mẹ tạo ra các subprocess và subprocess ẩn đối số của nó)? – Duncan

+0

@Duncan Nó sẽ. – hamstergene

1

subprocess không hiển thị API để thực hiện điều đó. Tôi khuyên bạn nên chuyển mật khẩu cho lệnh bằng biến môi trường:

subprocess.check_call('command --password="$PASSWORD"', shell=True, 
         env=dict(os.environ, PASSWORD=password)) 
+0

Nó sẽ không đạt được mục tiêu - quá trình của trình bao sẽ có mặt nạ mật khẩu, nhưng lệnh thực sự được bắt đầu bởi trình bao sẽ làm cho nó bị lộ ra giống nhau. – hamstergene

+0

Không có hiệu lực! – bones7456

Các vấn đề liên quan