1

socket.socket.recv非表示の入力で実行する方法はありますか。たとえば、パスワードを要求する場合、「sudo」bash コマンドを実行しているかのように、入力を非表示にする必要があります。
編集:
socket.socket.recvリモート エンドでデータを要求します。サーバーに接続すると、テキストの入力を求められ、入力するとコンソールに表示されます。sudo コマンドを使用すると、パスワードが要求され、入力したテキストが表示されません。で機能するこのようなものが欲しいsocket.sock.recvので、入力したパスワードは表示されません。
編集2:
私が言ったとき、私はsocket.socket.recv実際socket._socketobject.recvに私のプログラムで次のようになるようなものを意味していました: client.recv(BUF_SIZE).
編集 3:
telnet サーバーを作成しています。client.recv(BUF_SIZE)走っているようなraw_inputクライアント コンピューター上。getpass.getpassでは、クライアント コンピューターでの実行に似たものはありますか?

4

3 に答える 3

1

socket.recv()ソケットからデータを返します。そのデータをどうするかはあなた次第です。

私はあなたがこのようなことをしていると思います:

s.connect(...)
while True:
  print s.recv(4096)

その場合、問題はおそらく誰かが入力を入力しているリモートエンドです。

質問を明確にしていただけますか?recv()データを単独で表示することはありません。

于 2010-05-14T20:33:23.710 に答える
1

(編集2への対応)

一部のデータが秘密であるかどうかをエンコードし、そのデータを関数間で渡す方法の簡単な例を次に示します。

Python 2.6.2 (r262:71600, Sep 22 2009, 18:29:26)
[GCC 3.4.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> def capture(secret=False):
...  if secret:
...   from getpass import getpass
...   return chr(0) + getpass("Enter some secret text now: ")
...  else:
...   return raw_input("Enter some text now: ")
...
>>> def display(data):
...  if data[0] == chr(0):
...   print "(Secret text hidden)"
...  else:
...   print data
...
>>> display( capture() )
Enter some text now: Hello
Hello
>>> display( capture(secret=True) )
Enter some secret text now:
(Secret text hidden)
>>>

ソケットを使用している場合は、一方の端で使用s.sendall( capture() )し、もう一方の端で使用する必要がありますdisplay( s.recv4096) )

于 2010-05-17T10:09:11.430 に答える
1

(質問者の説明を受けて)

コンソール (テキストモード) プロンプトでユーザーからの入力を表示せずに取得できるようにする場合は、おそらくgetpass.

Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from getpass import getpass
>>> p = getpass("Enter some text now: ")
Enter some text now: 
>>> print p
secret
>>> 

ただし、これはソケットやネットワークとはまったく関係ありません。上記の変数pには、ユーザーが入力したテキスト (パスワードなど) が含まれます。これをネットワークに送信するとsocket.sendall(p)、リモート エンドでこのデータが受信されます。その時点で、データをどうするかを決定するのは受信スクリプト次第です...

于 2010-05-16T19:07:25.633 に答える