如何使用 paramiko 读取文件?
How can I read a file with paramiko?
我使用 paramiko
制作了一些脚本。
我的脚本使用 ssh
连接、输出文件和打印文件。
当我执行 运行 脚本时,出现以下错误:
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)
根据我的脚本,您是否知道为什么会出现此错误?
print
的默认目标是 sys.stdout
,您将其重定向并关闭了尝试 print
上方的 4 行。不要重定向 sys.stdout
,只需告诉 print
你想要的目标是什么(或使用文件的 write
方法):
stdin, stdout, stderr = client.exec_command('hostname')
target_f = open("c_host.txt", "w")
print(stdout.read().strip(), file=target_f)
target_f.close()
我使用 paramiko
制作了一些脚本。
我的脚本使用 ssh
连接、输出文件和打印文件。
当我执行 运行 脚本时,出现以下错误:
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)
根据我的脚本,您是否知道为什么会出现此错误?
print
的默认目标是 sys.stdout
,您将其重定向并关闭了尝试 print
上方的 4 行。不要重定向 sys.stdout
,只需告诉 print
你想要的目标是什么(或使用文件的 write
方法):
stdin, stdout, stderr = client.exec_command('hostname')
target_f = open("c_host.txt", "w")
print(stdout.read().strip(), file=target_f)
target_f.close()