2017-07-31 20 views
0

paramikoを使用してスクリプトを作成しました。 私のスクリプトは、ssh接続、出力ファイル、およびプリントアウトファイルを使用して動作します。paramikoでファイルを読む方法は?

私はスクリプトを実行すると、私は次のエラーを取得する:

Traceback (most recent call last): File "test.py", line 31, in print line ValueError: I/O operation on closed file

私のスクリプト、

#!/usr/bin/python 
# -*- coding: utf-8 -*- 

### Netapp C-Mode Connection and command excute 
import paramiko 
import sys 
import pandas as pd 
import xlsxwriter 

from paramiko import AutoAddPolicy 

sip = raw_input('input IP.\n') 
sid = raw_input('input ID.\n') 
spass = raw_input('input PASS.\n') 

client = paramiko.SSHClient() 
client.load_system_host_keys() 
client.set_missing_host_key_policy(AutoAddPolicy()) 
client.connect(hostname=sip, username=sid, password=spass) 

stdin, stdout, stderr = client.exec_command('hostname') 
sys.stdout=open("c_host.txt","w") 
print (stdout.read()).strip() 
sys.stdout.close() 

client.close() 

f = open("c_host.txt") 
for line in f: 
     print (line) 

このエラーは私のスクリプトに基づいて発生した理由を任意の考え?

答えて

0

printのデフォルトのターゲットはsys.stdoutです。リダイレクトして試行されたprintの上に4行を閉じました。代わりにsys.stdoutをリダイレクトするだけで、あなたの目的のターゲット(またはファイルのwriteメソッドを使用しますが)何printを伝える:

stdin, stdout, stderr = client.exec_command('hostname') 
target_f = open("c_host.txt", "w") 
print(stdout.read().strip(), file=target_f) 
target_f.close() 
+0

ありがとうございました。しかし、あなたのスクリプトはエラーが発生しました。 Python 2を使用している可能性がありますので、この行を次のように置き換えてください: 'target_f.write(target_f.write()、file = target_f)^ SyntaxError:無効な構文 – KJ9

+0

(stdout.read()) ' – Yigal

+0

同じエラーが発生しました – KJ9

関連する問題