我使用python的subprocess模块在我的服务器上运行ssh命令来收集它们的磁盘使用情况。我被卡住的一件事是,如果没有在任何服务器中配置ssh
,那么子进程会提示输入密码,这会使整个脚本卡住,然后我不得不自愿终止脚本本身。我只想让它释放所有请求密码提示的服务器(没有配置ssh)并继续处理其余的服务器。在
def MyFunction(server):
msg=""
ps = subprocess.Popen("ssh -l mygroup %s 'df -k /some/directory'" % server,stdout=subprocess.PIPE,shell=True)
out, err = ps.communicate()
if err != None:
msg += "\n"+err
else:
msg = out
return msg
server_list= ['server A','server B','server C','server D']
for server in server_list:
Final_msg+=MyFunction(server)
任何帮助都将不胜感激!:)
如果这只是你想避免的事情
ssh
向你要任何东西,那么你可以禁止它这样做。在您可以使用SSH选项
所以只需添加
-o BatchMode=yes
:顺便说一句,你为什么需要
^{pr2}$shell=True
在这里?做得更好因为它更干净、更安全、内部更简单。在
相关问题 更多 >
编程相关推荐