Telnet 和 SSH 在主文件中调用,Telnet 有效但 ssh 失败

发布于 2024-12-05 05:52:31 字数 1276 浏览 1 评论 0原文

我是 python 新手,在某些情况下我正在编写一个脚本来“telenet”设备 IP,如果 telnet 失败则为 SSH username@deviceIp 编写脚本。

对于所有 Telnet IP,它都可以完美工作。但是当我执行“ssh [email protected]" 下面的代码失败,我在 try bloc 本身中遇到错误,例如 ssh 设备的“socket.error”。

如果 telnet Ip 在 try 块中失败,我希望 ssh 设备进入 else 块。

在我的 Main.py 文件中

    try:
        #TELNET MODULE CALL
        tn= _telnetMOD._telnet(username, password, device)
        break
    else:
        #SSH MODULE CALL
        ssh= _sshMOD._ssh(username, password, device)

在 _telnetMod 文件中我有以下有效的代码 导入 telnetlib

def _telnet(_userVar,_passwordVAR, _device):
    tn=''
    tn = telnetlib.Telnet(_device,23)
    #PYTHON VERSION 2.6 AND HIGHER
    tn.read_until("Username: ",10)
    tn.write(_userVar + "\r")
    if _passwordVAR:
        tn.read_until("Password: ",10)
        tn.write(_passwordVAR + "\r")    
    return tn

在 _sshMOD 文件中我有以下代码,该代码失败并且不确定以下代码

import paramiko 

def _ssh(_userVar,_passwordVAR, _device):
    ssh=''
    ssh= paramiko.SSHClient()
    ssh.connect(_device, username=_userVar,password=_passwordVAR)
    return ssh

I am new to python, I am writing a script to 'telenet' device IP in some cases and SSH username@deviceIp if telnet faiils..

For all Telnet IP's it work perfectly.. But when i am doing "ssh [email protected]" the below code fails and I get error in try bloc itself like "socket.error" for ssh device's.

I want ssh devices to enter else block,, if telnet Ip fails in try block.

In my Main.py file

    try:
        #TELNET MODULE CALL
        tn= _telnetMOD._telnet(username, password, device)
        break
    else:
        #SSH MODULE CALL
        ssh= _sshMOD._ssh(username, password, device)

In _telnetMod file i have below code which works
import telnetlib

def _telnet(_userVar,_passwordVAR, _device):
    tn=''
    tn = telnetlib.Telnet(_device,23)
    #PYTHON VERSION 2.6 AND HIGHER
    tn.read_until("Username: ",10)
    tn.write(_userVar + "\r")
    if _passwordVAR:
        tn.read_until("Password: ",10)
        tn.write(_passwordVAR + "\r")    
    return tn

In _sshMOD file i have below code which fails and not sure of below code

import paramiko 

def _ssh(_userVar,_passwordVAR, _device):
    ssh=''
    ssh= paramiko.SSHClient()
    ssh.connect(_device, username=_userVar,password=_passwordVAR)
    return ssh

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

许你一世情深 2024-12-12 05:52:31

您忘记了 client.load_system_host_keys() 吗?这是文档中的一个示例:

client = SSHClient()
client.load_system_host_keys()
client.connect('ssh.example.com')
stdin, stdout, stderr = client.exec_command('ls -l')

您应该像这样使用 try 块:

try:
    telnet()
except:
    telnet = false
if telnet == false:
    try:
        ssh()
    ...

Did you forgot the client.load_system_host_keys()? This is an example from the docs:

client = SSHClient()
client.load_system_host_keys()
client.connect('ssh.example.com')
stdin, stdout, stderr = client.exec_command('ls -l')

And you should use the try block like this:

try:
    telnet()
except:
    telnet = false
if telnet == false:
    try:
        ssh()
    ...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文