gpt4 book ai didi

python - 如何检查是否存在SSH主机名解析错误

转载 作者:行者123 更新时间:2023-12-03 08:56:28 25 4
gpt4 key购买 nike

我正在使用Python使用scp自动从网络传感器复制二进制文件。我想添加一些错误检查,但是我想不出如何可靠地检查SSH是否引发错误,例如主机名解析错误。我当前正在使用.communicate()收集stdout,然后在错误消息中的“ssh”上进行匹配。我要检查err是否以“ssh”开头的原因是,如果未引发任何错误,则该err变量将包含要登录的传感器的标题,因此,我真的没有办法可靠地检查err是否实际是否具有值(如果有意义)。我还在检查错误代码,以防找不到文件或抛出其他错误。有没有更好的方法?

这是当前工作的代码:

    sp = Popen(['scp', '@'.join([self.user, self.sensor]) + ':{0}{1}'.format(self.binPath, self.binName), self.storePath], stdout = PIPE, stderr = PIPE)
data, error = sp.communicate()

if error.startswith("ssh"):
print("ERROR: {}".format(error))
else:
if sp.returncode == 1:
print("ERROR: {} - No such file or directory".format(self.binPath + self.binName))
elif sp.returncode == 0:
self.hashCMP(self.storePath, self.binName, md5Sum)
else:
pass

最佳答案

解决此问题的方法之一是为域创建测试吗?例如,使用类似:

      from socket import getaddrinfo
result = getaddrinfo("www.google.com", None)
print result[0][4]

我注意到您正在使用popen-如果您的操作系统具有nc(netcat),则可以运行以下命令:
      nc -v <host> <port> #I believe this uses the getaddrinfo under the hood as well ;-)

谢谢,
//P

关于python - 如何检查是否存在SSH主机名解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23681213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com