下午 4:15(3 分钟前)

你好,

我想知道是否有一种方法可以不使用 send_pexpect 来验证主机。我有数百个 IP,我需要验证我的 tacacs 用户名是否有效,如果无效,则等待评论。我遇到的问题是,我无法验证期望是由于我的凭据还是主机未启动。

i=0 而 i

    try:
            conn = SSH2(verify_fingerprint = False)
            conn.connect(allips)
            conn.login(usuario)
            adding = allips, "goods"
            print adding
            lista_buena.append(allips)
            #time.sleep(1)

    except:

            adding2 = allips,"NOT GOOD"
            print adding2
            lista_mala.append(adding2)
    i += 1

谢谢,

答案1

有一个很棒的答案锡尔瓦多

引用的代码与您要执行的操作非常相似。它们使用 paramiko.SSHClient 库给出了一个很好的示例。

https://stackoverflow.com/questions/14236346/elegant-way-to-test-ssh-availability

如果这不起作用,也可以选择使用子进程 + OpenSSH: https://gist.github.com/bortzmeyer/1284249

您可能希望调整计时器和异常处理以提高性能。如果您只处理几百个节点,这样的串行代码就很棒,但是当您处理 10K 或更高节点时,我建议使用 parallel-ssh。

仅我的 $.02 (^_^) 祝你好运!

答案2

或者你也可以使用:

    try:
            conn = Telnet(logfile = logfiles, verify_fingerprint = False)
            conn.connect(allips)
            try: 
                    conn.login(usuario)
                    print "SUCCESS: " + allips
                    filename.write('SUCCESS  ' + allips)
                    filename.write("\n")
                    filename.write("************ \n")
                    time.sleep(2)
            except:
                    print "Not Priviledge: " , allips
                    filename.write('Not Priviledge  ' + allips)
                    filename.write(" \n")
                    filename.write("************ \n")
    except:
            #print allips + "NO HOST"
            print "Not Enabled: ", allips
            filename.write('Not Priviledge  ' + allips)
            filename.write(" \n")
            filename.write("************ \n")
            filename.close()
            time.sleep(2)

相关内容