我正在使用python中的parmiko对服务器进行ssh。从那里,我需要telnet到几个设备并捕获输出。我能够ssh然后telnet到只有一个设备,但不能从一个循环telnet多个设备。请建议我如何做到这一点。 我使用以下
import paramiko
import telnetlib
ip = ''
port = 42705
username = ''
password = ''
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,port,username,password)
f=open("abc.txt", "r")
x=f.readlines()
i=1
if i < 100:
print i
cmd = "telnet " + x[i]
print cmd
i=i+1
stdin, stdout, stderr = ssh.exec_command(cmd)
stdin.write('''
terminal length 0
show platform
exit
''')
outlines = stdout.readlines()
resp = ''.join(outlines)
print(resp)
当我不使用if语句并直接给ip时,它的工作正常。但我需要从同一台服务器telnet多个设备。谢谢你的回复!
我现在使用以下代码:
#! /usr/bin/python
import sys
import paramiko
ip=''
port=42705
username=''
password=''
f1=open("abc.txt", 'r')
devices=f1.readlines()
for device in devices:
device = device.rstrip()
print device
command = "telnet " + device
ssh = paramiko.SSHClient()
print command
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip, port, username, password)
stdin, stdout, stderr = ssh.exec_command(command)
stdin.write('''
primenms
primenms123
terminal length 0
show platform
exit
ls
''')
outlines = stdout.readlines()
resp = ''.join(outlines)
print(resp)
ssh.close()
f1.close()
它能够ssh但是当我从ssh服务器进行telnet时,它输入凭证primenms和primenms123作为用户名和密码,这是正确的凭据,但它显示为授权失败。我哪里错了?请帮帮我们!
答案 0 :(得分:1)
您应该使用for
循环代替:
for i in f.readlines():
cmd = "telnet {0}".format(i)
print cmd
理想情况下,您希望使用以下命令执行命令:
ssh.exec_command(cmd)
然后您可以像下面的示例一样使用它:
for i in f.readlines():
cmd = "telnet {0}".format(i)
ssh.exec_command(cmd)
在不知道abc.txt
内的内容的情况下,您可能还需要其他ssh命令。
答案 1 :(得分:0)
stdin.write('''
primenms
primenms123
terminal length 0
show platform
exit
ls
''')
到
stdin.write('''primenms
primenms123
terminal length 0
show platform
exit
ls
''')