gpt4 book ai didi

python - 从服务器通过 SSH 远程登录

转载 作者:行者123 更新时间:2023-11-28 18:29:09 25 4
gpt4 key购买 nike

我正在使用 python 中的 parmiko 对服务器执行 ssh。从那里,我需要远程登录到多个设备并捕获输出。我只能通过 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 时,它工作正常。但我需要从同一台服务器远程登录多个设备。感谢您的回复!

我现在使用以下代码:

#! /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 作为用户名和密码,这是正确的凭据,但它显示为授权失败。我哪里错了?请帮帮我!

最佳答案

您可能应该改用 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 命令。

关于python - 从服务器通过 SSH 远程登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38880723/

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