2016-05-07 3 views
0

私はPythonには初めてです。毎日サーバーにログインする必要があります(デスクトップ - > 1.32 - > 0.20 - > 3.26)。このために私はパテを開き、ssh接続を使用してログインする必要があります。これを行うには、私はPythonを使ってスクリプトを書いています。パテウィンドウを開き、sshコマンドを実行する - Python

私はサブプロセスと考えていました.Popenはそれを行います。しかし、うまく動作しません。

第一トレイル:

import subprocess 
pid = subprocess.Popen("putty.exe [email protected] -pw password").pid 

その作業罰金(0.32にウィンドウのログを開きます)。しかし、入力を与えることができない。パイプを使用するのに必要なプロセスと同じプロセスを入力するようになったことがわかりました。

第二トレイル:

from subprocess import Popen, PIPE, STDOUT 
p = Popen("putty.exe [email protected] -pw password", stdout=PIPE, stdin=PIPE, stderr=STDOUT)  
grep_stdout = p.communicate(input=b'ssh xx.xx.x.20\n')[0] 
print(grep_stdout.decode()) 

私も最初のサーバーへのログインカントこれを使用します。すべてのサーバにログインしたら、端末が生きている必要があります。これを行う方法???

編集

私は新しいパテウィンドウでこれを行う必要があります。ログイン後、ウィンドウを閉じません。私はいくつかの手作業をしています。

答えて

0

Python用のSSHv2プロトコル実装があります。http://www.paramiko.org/です。あなたは簡単にピップでそれをインストールすることができます。

pip install paramiko 

次にあなたは、SSHクライアントを作成し、あなたのホストに接続し、コマンドを実行することができます。

import paramiko 
ssh_client = paramiko.SSHClient() 
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
ssh_client.connect('hostname', username='login', password='pwd') 
stdin, stdout, stderr = ssh_client.exec_command('command') 
0

使用paramikoライブラリのpython を使用してSSH接続を確立します -

ssh = paramiko.SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
ssh.connect(hostname,username, password) 

チェック状態の接続が使用して生きている場合 -

status = ssh.get_transport().is_active() 
#returns True if connection is alive/active 

ssh.exec_command()は、基本的に単一のセッションです。 (Command1を; command2の)exec_commandを使用しても

1つのセッションで複数のコマンドを実行するために、あなたは、単一のセッションで複数のコマンドを実行するために

channel = ssh.invoke_shell() 
stdin = channel.makefile('wb') 
stdout = channel.makefile('rb') 
stdin.write(''' 
    Command 1 
    Command 2 
    ''') 

print stdout.read() 
+0

をこれを使用することができ、私は新しいウィンドウ(パテ)をポップに持っている必要がありますログイン。ログインがすべてのサーバー(デスクトップ - > 1.32 - > 0.20 - > 3.26)に完了した後、パテイのウィンドウを閉じないでください(私はいくつかの手動作業をチェックしています)。 –