как проверить коммутатор или маршрутизатор с помощью SSH или telnet в Python

теперь должны трудно кодировать telnet или ssh, как к автоматическому знают, использует ли он ssh или telnet, и затем решите использовать ssh или telnet

#!/usr/bin/python

import getpass
import pexpect
import sys
import os
0
задан 29 January 2015 в 00:36

2 ответа

import socket
import subprocess
ClientSocket = socket.socket()
try:
    ClientSocket.connect(("remote_host", 22))
    port = 22
except socket.error:
    ClientSocket.connect(("remote_host", 23))
    port = 23
finally:
    command = "sshpass -ppassword ssh -t -t username@remote_host -p {0}".format(port).split()
    subprocess.call(command)
    ClientSocket.close()

Здесь мы при первой попытке что, открыт ли порт 22 (SSH) на удаленном хосте, если открытый переход к finally сегмент, если это повышает проверку исключения, открыт ли порт 23 (Telnet) и затем переходит в finally. В finally сегмент мы используем sshpass программа (необходимо установить его вручную sudo apt-get install sshpass, если не установленный) для обеспечения пароля непосредственно в команде можно также использовать модуль paramiko Python здесь.

Проблема безопасности: Вы не должны давать свой пароль как простой текст.

1
ответ дан 6 October 2019 в 02:52

Этот вопрос о переполнении стека может enlight Ваша проблема, просто адаптировать код к Вашим потребностям. Например:

import socket

sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
if sck.connect_ex(('some_host_name_or_ip', 23)) == 0:
    ## Telnet is open do telnet related stuff here

sck.close()

sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
if sck.connect_ex(('some_host_name_or_ip', 22)) == 0:
    # SSH is open do ssh related stuff here

sck.close()
1
ответ дан 6 October 2019 в 02:52

Другие вопросы по тегам:

Похожие вопросы: