我有一个包含服务器列表的字典:
{'server1':'RHEL 6.8','server2':'RHEL 6.8','server3':'RHEL 6.8','server4':'RHEL 6.8'}
我想在每个节点上启动一个hostname
命令(这是类上的方法)。
ssh连接:
def ssh(self, cl_name, cmd):
try:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(self.cl_name, timeout=2)
stdin, stdout, stderr = ssh.exec_command(cmd)
out = stdout.read()
return out
except (paramiko.ssh_exception.SSHException, socket.error, paramiko.ssh_exception.AuthenticationException, socket.gaierror):
print "server DOWN"
return False
这是应该在每个节点上运行hostname
命令的方法:
def get_load(self):
for k in self.get_cluster_nodes().keys():
print k
cmd = "hostname"
print self.ssh(k, cmd).rstrip()
这是输出:
server1(示例:打印k) server4(示例:打印self.ssh(k,cmd).rstrip())
server2 server4
server3 server4
server4 server4
我在python 2.7上工作。
答案 0 :(得分:0)
看到您的输出,一切似乎都很好。
您使用的是self.cl_name
而不是cl_name
,它是函数的参数(在这种情况下为k
)。
我认为您是从对象中调用该方法的,该对象的属性cl_name
设置为server4
。
旧:
尽管似乎hostname
命令的输出对于每台服务器都是相同的,但是您是否尝试过手动连接到每台服务器并运行hostname
?
如果这样做,问题可能出在其他地方,例如服务器IP值不正确或其他问题。