Как я могу использовать SSH для запуска команд Cisco IOS в режиме глобальной конфигурации?

Я знаю о Kron, но, возможно, less возможности запуска глобальных команд конфигурации:

http://www.techrepublic.com/article/schedule-commands-with-cisco-ios-kron/

Если я подkeyаюсь с помощью Putty, Putty может запускать несколько команд после inputа в систему и работает как шарм. Дело в том, что я хочу автоматически inputить в коммутатор каждую ночь в 11 вечера и закрывать ряд interfaceов.

Я пытаюсь использовать sshpass, но, похоже, только 1 команду за раз.

Существует также беспроигрышный способ ввода переkeyателей cisco, но с IOS 15.0:

Password-less ssh login using pki to Cisco IOS

2 Solutions collect form web for “Как я могу использовать SSH для запуска команд Cisco IOS в режиме глобальной конфигурации?”

Случилось, что у меня была такая же работа, как и несколько лет назад. Вот что я сделал в то time, надеюсь, что это поможет:

#!/usr/bin/expect -f set ipadr [lindex $argv 0] set cmd [lindex $argv 1] set fich [lindex $argv 2] if { ${cmd} == 1 } then {set comm "sh flash | tee tftp://TFTP-IP-ADDRESS/essai\r"} else {set comm "copy flash:${fich} tftp://TFTP-IP-ADDRESS\r"} spawn ssh niji@${ipadr} expect { "password:" { send "YOURPASSWORDHERE\r" } "(yes/no)?" { send "yes\r"; expect { "password:" { send "YOURPASSWORDHERE\r"; }}} "Name:" { send "YOURUSERNAMEHERE\r"; sleep 3 ; send "YOURPASSWORDHERE\r"; } "Connection refused" { exit } } expect { ">" { send "en\r" ; sleep 3; send "EN-PASSWD\r";} "#" { send "\r" } } expect { "#" { send "${comm}" ; sleep 5; send "\r" ;send "\r" } } expect { "#" { send "exit\r"; send "quit\r" } } 

Это подkeyает устройство IOS с IP-адресом, предоставленным в качестве аргумента. Пароли и имена пользователей жестко закодированы, поэтому я предполагаю, что вы хотите улучшить это.

Команда, отправленная на маршрутизатор, это «copy run tftp» или что-то подобное, но вы можете изменить его на все, что вам нужно.

Это было некоторое time назад, я полагаю, что я бы сделал несколько повторных работ, если бы мне пришлось повторно использовать его сейчас, но это может быть хорошей базой для начала.

Ура,

Хорошо, я нашел это:

/ usr / local / bin / sshpass -p password ssh admin@1.1.1.1 <ios-cmds.txt

где ios-cmds.txt содержит все команды в отдельных stringх, как если бы я набирал их последовательно.

Кроме того, один из моих коллег предложил использовать команду linux:

 expect 

РЕДАКТИРОВАТЬ: Одна вещь, о которой нужно быть осторожной, заkeyается в том, что если session SSH никогда не состоялся, часть обмена certificateами с коммутатором заставит команду сбой молча или ничего не делать. Сначала подkeyитесь к коммутатору, чтобы принять certificate вручную, а затем SSHPASS будет рад войти в систему и выполнить команды.

EDIT 2: после комментария YBounya, я закончил с этим скриптом, который в основном проходит через последовательные IP-адреса и отkeyает ряд interfaceов, сценарий получает «on» или «off» в качестве аргумента для выполнения операции вkeyения или выkeyения :

 #!/usr/bin/expect -f if { [lindex $argv 0] eq "on"} { set action "no shut\r" puts "Turning on switchports\n" } elseif { [lindex $argv 0] eq "off" } { set action "shut\r" puts "Turning off switchports\n" } else { puts "No power action found. Provide \"on\" or \"off\"." exit } proc shutPort {ip action} { spawn ssh admin@192.168.201.$ip expect { "(yes/no)" { send "yes\r"; expect { "assword:" { send -- "REAL_PASSWORD\r"; }}} "assword: " { send -- "REAL_PASSWORD\r" } "No route to host" { return } ;# switch uses Telnet or just not listen on port 22 "Connection refused" { return } ;# switch is not reachable "modulus too small" { return } ;# RSA key is not acceptable } expect ">" send -- "en\r" expect "assword: " send -- "REAL_PASSWORD\r" expect -re "\r\n#" send -- "conf t\r" expect "(config)#" send -- "int ran gig1/0/7-48\r" expect { "config-if-range" { send -- $action } ; # if previous sends succeeds, enter interface range mode "marker" { send "int ran gig0/7-48\r"; # interface syntax didn't work expect { "config-if-range" { send -- $action } "marker" { send "int ran fas0/7-48\r"; expect { "config-if-range" { send -- $action } "marker" { send "int ran fas0/7-24\r"; expect { "config-if-range" { send -- $action } } } } } } } } send -- "exi\r" send -- "exi\r" send -- "exi\r" expect eof } for {set i 42} {$i < 51} {incr i} { shutPort $i $action } 
  • Не удалось выполнить ping Cisco 3750 Переkeyение с устройства, не подkeyенного напрямую
  • Настройка сети с двумя провайдерами
  • Соединения Cisco sg100-08
  • Резервирование моста Linux
  • Как я могу сказать, что маршрутизатор cisco отбрасывает пинги из-за подозрения DOS или если он испытывает потерю пакетов?
  • трафик cisco sg300 через брандмауэр Watchguard
  • Отладка удаленных сообщений UDP в Linux
  • Смешивание SFP с разной скоростью
  • Должен ли коммутатор 3Com NJ225 реализовать протокол spanning tree?
  • Изоляция виртуального коммутатора VMWare
  • Больше управления VLANS для коммутатора
  • Cisco Nexus: list всех interfaceов с их ips
  • Interesting Posts

    Как я могу контролировать process обмена?

    Событие Asterisk PauseQueueMember – вызовы AMI

    Как установить fonts в Windows Web Server 2008 R2

    Ошибка SVN DB – Неустранимая ошибка, запустить восстановление базы данных

    Лак + Nginx + WordPress: использование loops перенаправления лака get

    Переслать все письма другому пользователю в Exchange 2010

    gitorious не работает как виртуальный хост

    Nginx: можно использовать SSL-certificateы из разных источников по одному IP-адресу?

    Как ограничить всех, кроме определенной группы в SSH?

    Как я могу подобрать логины vsftpd с помощью auditd и его плагина prelude?

    nmap не находит живых хостов с проверкой ping

    Стандарт Windows Server 2008 не показывает правильный объем памяти

    Как ограничить пропускную способность для копии fileа?

    Разрешение доступа к шаблону (%) в MySQL db, получение ошибки «доступ запрещен для« <user> »@« localhost »»

    Как я могу проверить bash, если shell работает в интерактивном режиме?