【发布时间】:2014-07-04 12:14:06
【问题描述】:
我想知道远程服务器的磁盘使用情况,我想用 ssh 来做 这是我到目前为止所做的:-
def disk_usage(server):
msg=""
ps = subprocess.Popen(["ssh", "-o", "BatchMode=yes", "-l", "mygroup", server, "df -k /some/directory"], stdout=subprocess.PIPE)
out, err = ps.communicate()
if err != None:
msg += "\n"+err
else:
msg = out
return msg
Final_msg = ""
server_list= ['server A','server B','server C']
for server in server_list:
Final_msg+="For Server :"+server+"\n"+disk_usage(server)
print Final_msg
脚本运行良好,但问题是当任何服务器的 ssh 未配置时,它只会显示该服务器的空白输出
输出:-
For Server A :
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/cfd/ace 8064048 3581524 4072892 47% /app
For Server B :
For server C :
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/wsa/ace 306423 244524 23243434 90% /app
这里没有配置服务器 B 的 ssh,所以我得到一个空白输出,因为所有 ssh 连接的批处理模式都打开 (BatchMode=yes),但我希望用户知道为什么没有输出。
当我在未配置 ssh 的服务器的 shell 上运行相同的命令时,我收到以下错误:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
我希望在未配置 ssh 的特定服务器的脚本输出中出现相同的错误。
有什么想法吗?
【问题讨论】:
标签: python subprocess stdout stderr