Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 python,在for循环中,我只能使用最后一个元素进行迭代_Python 2.7 - Fatal编程技术网

Python 2.7 python,在for循环中,我只能使用最后一个元素进行迭代

Python 2.7 python,在for循环中,我只能使用最后一个元素进行迭代,python-2.7,Python 2.7,我有一本包含服务器列表的字典: {'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_p

我有一本包含服务器列表的字典:

{'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()
这是输出:

服务器1(示例:print k) server4(示例:print self.ssh(k,cmd.rstrip())

服务器2 服务器4

服务器3 服务器4

服务器4 服务器4


我使用的是python 2.7。

看到您的输出,一切似乎都很好

您使用的是
self.cl\u name
而不是
cl\u name
,后者将是函数的参数(
k
)。 我认为您是从一个属性
cl\u name
设置为
server4
的对象调用该方法

旧的:
虽然每个服务器的
主机名
命令输出似乎是相同的,但您是否尝试手动连接到每个服务器并运行
主机名


如果您这样做了,问题可能来自其他地方,例如服务器IP的错误值或其他问题。

您的问题是什么,您没有提到。是的,我提到过,如果您看到最后5行(是my.py的输出),则结果仅与我词汇的最后一个键对应,我期望的结果是:server1 server1 server2 server2 server3 server3 server4 server4我投票关闭,原因是“不清楚你在问什么”,因为我看不到你(奇怪的)字典和你的问题之间的联系,不,你的评论没有帮助我理解你的问题。嗨,是:cat clu.txt服务器1服务器2服务器3服务器4[root@mynode/home/user/dir]#cat clu |同时读取n;执行echo$n&&ssh-qn$n主机名;完成服务器1服务器1服务器2服务器2服务器3服务器3服务器4服务器4您的打印显示您正在迭代所有密钥(
print k
为您提供
server1..2..3..4
。您是否尝试打印IP或在函数中连接到服务器时使用的任何标识?