1

Eclipse で次のコードを実行すると、getPass は末尾にキャリッジが付加された文字列を返します。

ただし、コマンドプロンプトで同じコードを実行すると、問題なく実行されます。

import paramiko
import getpass

userPwd = getpass.getpass()
print ('You have entered ',userPwd)

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('ese.rnd.sanl.se', username='abc', 
    password=userPwd)
stdin,stdout,stderr=ssh.exec_command("ls")
data1=stdout.read().splitlines();

for line in data1:
    print (line)

出力 (Eclipse):

Warning: Password input may be echoed.
Password: Mypassword@123
('You have entered ', 'Mypassword@123\r')

出力 (コマンド プロンプト):

Warning: Password input may be echoed.
Password: Mypassword@123
('You have entered ', 'Mypassword@123')

誰もこの曖昧さを説明できますか?

ありがとう!!

4

1 に答える 1

0

Eclipse が Windows の改行文字 '\r\n' を使用するように設定されていると思われます。UNIX 改行 ('\n') を使用するように設定する必要があります。

基本的に、これは Python メソッド 'getpass()' がバッファ内の最後の文字を切り刻んでいることを意味します。2 つの文字を指定しているため、\r がありません。

このオプションを変更する方法については、こちらを参照してください。

于 2016-02-10T22:39:20.400 に答える