如何解决如何检查ssh.exec_command执行成功与否?
我正在远程主机内执行gcloud命令。 但是,当我尝试使用ssh.exec_command执行任何命令时,该命令似乎已执行。但是我如何确保它正确执行。
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: secret-creator
rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["create"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: role-binding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: secret-creator
subjects:
- kind: ServiceAccount
name: default
namespace: default
如何检查ssh.exec_command执行成功?
谢谢
解决方法
有两种方法,但是通常来说,您应该使用以下命令评估正在执行的命令的退出代码:
stdout.channel.recv_exit_status()
请注意,这仅适用于马丁·普里克里(Martin Prikryl)提到的简短输出或快速命令,否则将导致死锁。
根据正在执行的命令,您可以检查零退出代码,也可以根据命令排除特定的退出代码。
cmd = 'gcloud compute firewall-rules delete'+firewall_list
stdin,stdout,stderr = ssh.exec_command(cmd)
# Verify this condition applies to your specific case
if stdout.channel.recv_exit_status() != 0:
# error handling,your command was not succesful
ssh.close()
尽管不是首选方法,但是您也可以在stdout和stderr上验证readlines()或read()的内容,但这通常不是必需的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。