Можно ли управлять коммутатором через команды Bash?

Как можно автоматизировать закрытие неиспользуемых портов на сотне коммутаторов Huawei, используя скрипт на Bash и утилиту sshpass? Проблема заключается в том, что команды, передаваемые в скрипт, уходят на коммутатор одной строкой, вместо того чтобы попадать на разных строках. Я пытался использовать expect, но это не сработало. Как можно разрешить эту проблему?
  • 12 августа 2024 г. 12:03
Ответы на вопрос 2
Да, можно управлять коммутатором через команды Bash, используя утилиту sshpass для автоматической авторизации на устройстве.

Для автоматизации закрытия неиспользуемых портов на сотне коммутаторов Huawei с использованием скрипта на Bash и утилиты sshpass, можно использовать следующий подход:

1. Создайте файл со списком IP-адресов всех коммутаторов Huawei.
2. Напишите скрипт на Bash, который будет циклично проходить по каждому IP-адресу, подключаться к коммутатору по SSH с помощью sshpass и выполнять необходимые команды для закрытия неиспользуемых портов.
3. Пример скрипта на Bash:

```bash
#!/bin/bash

# Читаем список IP-адресов из файла
while IFS= read -r ip_address; do
    # Подключаемся к коммутатору по SSH с помощью sshpass и выполняем необходимые команды
    sshpass -p password ssh user@$ip_address "command_to_close_unused_ports"
done < list_of_ip_addresses.txt
```

4. Убедитесь, что у вас установлены пакеты `sshpass` и `expect` (для обработки ввода пароля).
5. Запустите скрипт и он будет циклично подключаться к каждому коммутатору и закрывать неиспользуемые порты.

Если команды передаются как одна строка, а не по одной, можно использовать следующий подход:

1. Используйте `echo` для передачи окончания строки (`\n`) после каждой команды, чтобы разделить их.

Пример:

```bash
#!/bin/bash

# Читаем список IP-адресов из файла
while IFS= read -r ip_address; do
    # Подключаемся к коммутатору по SSH с помощью sshpass и выполняем необходимые команды
    sshpass -p password ssh user@$ip_address "command_to_close_unused_port1 \n command_to_close_unused_port2 \n command_to_close_unused_port3"
done < list_of_ip_addresses.txt
```

Таким образом, скрипт будет отправлять каждую команду на новой строке, что позволит правильно выполнить их на коммутаторе.
На баше автоматизация общения с железками неплохо делалась с помощью утилиты expect 
либо гуглить API от этих устройств - вдруг есть, и тогда можно уже курлом либо python + requests
Похожие вопросы