2017-11-20 3 views
0

WindowsマシンからPythonのサブプロセスモジュールを使用してUNIXボックスに接続しようとしています。厳密にはサブプロセスモジュール私の知っているように環境制限を持っているので、私はUNIXシステムに接続するために窓からそれらを実行することはできません)。 私は試したことがありますし、私はいつもパスワードプロンプトで対話型キーボード認証メッセージを取得します。そのプロンプトにはパスワードを入力してください。コマンドdoesntの仕事に-pw使用Pythonを使用しているウィンドウからsshを使用してUNIXボックスにログインする際にサブプロセスを使用してパスワードを送信するには

import subprocess 
cmd='plink -ssh [email protected] -pw password' 
sp=subprocess.Popen(cmd,stdin=subprocess.pipe,stdout=subprocess.pipe,shell=False) 
sp.stdin.write('password \n') 
sp.stdin.flush() 
error,out=sp.communicate 
print error 
print out 

はコンソールにもstdin.writeしようとしましたが、(タイム-pwオプションまたはstdin.writeのいずれか1つを使用している)だけでなく、それを行うことができませんでした。私も私の実行環境上でいくつかの制限があり、またこれは、FreeBSD 1に接続するために、私のWindowsマシン上で正常に動作窓に

+0

Windowsで動作する他の提案を歓迎し、環境上の制限はありませんか? –

+0

ところで、 'shell = False'は(A)Windowsでは無視されます。(B)' Popen'に単一の文字列としてコマンドを渡すときに、あなたが望むフラグではありません。 –

+0

@MadPhysicistはい私は、このメッセージを受け取らずにUNIXボックスに接続できるpython内部モジュールを使用して任意の提案に公開しています。また、私はパスワードなしログインを行うために秘密鍵を使用するオプションを使用しないでください。 –

答えて

0

を現在イマイチのtermiosを必要とpexpect:

>>> import subprocess 
>>> cmd = r'c:\path\to\plink -ssh [email protected] -pw pass' 
>>> p = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, 
      stderr=subprocess.PIPE) 
>>> p.stdin.write(b'ls -al\nexit\n') 
12 
>>> p.stdin.flush() 
>>> err = p.stderr.read() 
>>> out = p.stdout.read() 
>>> print(err) 
b'Using username "user".\r\n' 
>>> print(out.decode()) 
Last login: Mon Nov 20 17:16:18 2017 from xxx 
... remaining of login message 
$ ls -al 
total 240 
... listing of home directory 
$ exit 

userpassmachine必要がありますあなた自身のLinuxまたはUnixボックスごとに設定することができます...

+0

の '対話式キーボード認証passsword:'を与える​​と、もっと精巧にするために-pwを使うことができます。私はそれを使用してパスワードを返すことはできません:プロンプト。あるボックスに-pwを受け入れることができるような設定があるかどうかは分かりませんし、他には「対話式キーボード認証passsword:」を与えます –

+0

私はUNIXボックスで出力を受け入れ、出力に基づいてパスワードを入力できる方法はありますか? sp.stdin.write( 'Password') 'code' –

+0

@ c-vang:問題は起こりそうですか?サーバー側である。sshdデーモンは、対話型キーボード認証を拒否し、キーベースの認証だけを受け入れるように設定できます。 2番目のボックスに接続できる場合は、1/cmdウィンドウから対話式にテストする必要があります。2/sysadminに詳細を問い合わせてください。しかし、私は推測することはできません... –

関連する問題