Напиши скрипт подключения к серверу А по ssh и запуску

Напиши скрипт подключения к серверу А по ssh и запуску на нем команды ping до сервера Б. Если запрос от А до Б проходит то скрипт возвращает значение 1, если произошла ошибка выполнения на каком нибудь из шагов то скрипт возвращает 0.
Дополнительные параметры: codeFlowType: codeWrite codeFlowLang: Python
Создано: 24.04.2025 12:15

Напиши скрипт подключения к серверу А по ssh и запуску на нем команды ping до сервера Б. Если запрос от А до Б проходит то скрипт возвращает значение 1, если произошла ошибка выполнения на каком нибудь из шагов то скрипт возвращает 0.

Конечно! Ниже представлен пример кода на языке Python, который подключается к серверу А по SSH и запускает команду ping до сервера Б. В зависимости от результата выполнения команды, скрипт возвращает значение 1 или 0.

Для работы с SSH в Python, мы можем использовать библиотеку paramiko. Убедитесь, что она установлена, вы можете установить её с помощью команды:

pip install paramiko

Вот сам код:

import paramiko

def ping_server_a_to_b(server_a_ip, server_b_ip, username, password):
    try:
        # Создаем SSH клиент
        client = paramiko.SSHClient()
        # Загружаем системные ключи
        client.load_system_host_keys()
        # Добавляем ключ хоста автоматически
        client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        # Подключаемся к серверу А
        client.connect(server_a_ip, username=username, password=password)

        # Выполняем команду ping
        command = f'ping -c 4 {server_b_ip}'  # Для Unix-подобных систем (Linux, macOS)
        # Для Windows используйте: command = f'ping -n 4 {server_b_ip}'
        
        stdin, stdout, stderr = client.exec_command(command)
        
        # Читаем вывод команды
        output = stdout.read().decode()
        error = stderr.read().decode()

        if error:
            print(f"Ошибка выполнения команды: {error}")
            return 0  # Возвращаем 0 в случае ошибки

        print(output)  # Вывод результата ping
        return 1  # Успешное выполнение, возвращаем 1

    except Exception as e:
        print(f"Произошла ошибка: {e}")
        return 0  # Возвращаем 0 в случае исключения
    finally:
        client.close()  # Закрываем соединение

# Пример использования функции
result = ping_server_a_to_b('192.168.1.1', '192.168.1.2', 'username', 'password')
print(f"Результат: {result}")

Как использовать

  1. Замените '192.168.1.1' на IP-адрес сервера А.
  2. Замените '192.168.1.2' на IP-адрес сервера Б.
  3. Укажите ваше имя пользователя и пароль для доступа к серверу А.

Важно

  • Убедитесь, что на сервере А установлен пакет SSH и доступен для подключения.
  • Настройки брандмауэра и сети должны разрешать ICMP запросы (ping).