Команда run позволяет выполнять команды операционной системы из CLI.
Синтаксис run {command}
command команда, предназначенная для выполнения командным интерпретатором. Для шлюза используется командный интерпретатор sh, который запускается в директории Продукта под тем же пользователем, под которым запущена консоль.
Значение по умолчанию Значение по умолчанию отсутствует
.
Режимы команды privileged EXEC
Рекомендации по использованию
Данная команда предназначена для выполнения команд операционной системы, а также для запуска утилит Продукта, описанных в документе «Специализированные команды». Вывод команды передается на экран без изменения.
Прервать выполнение внешнего приложения можно комбинацией
клавиш
Ctrl-Shift-6.
Если по каким-либо причинам внешняя программа не отреагировала на прерывание,
можно нажать CTRL-|.
Эта команда посылает SIGKILL – неперехватываемый сигнал, по которому выполнение
внешней программы прекращается.
В случае ввода команды с заведомо ошибочным синтаксисом, например, если присутствуют незакрытые кавычки, выдается сообщение об ошибке: % Shell command is not supported.
Проверка синтаксиса не исчерпывающая. Возможен ввод команд, синтаксис которых будет отвергнут командным процессором системы.
Для маршрутизаторов ESR-ST аналогичное сообщение может быть выдано при несоблюдении специальных ограничений на команду. Подробнее см. ниже.
В аргументах команды можно использовать префиксы, аналогичные используемым в командах работы с файлами:
· Допустимо использовать префикс только в начале аргумента.
· Допустимо использовать префикс внутри двойных кавычек ("), при условии, что префикс будет написан сразу после отрывающей кавычки.
· Если используются одинарные кавычки ('), префикс не будет преобразовываться в путь к файлу.
Примеры (кроме маршрутизаторов ESR-ST)
Подстановка отсутствует:
sterragate#run echo 'file:my_file.txt' _file:my_file.txt " my_file.txt"
file:my_file.txt _file:my_file.txt my_file.txt
Подстановка присутствует:
sterragate#run echo file: file:some_file.txt "file:some_file.txt"
/var/cspvpn/ /var/cspvpn/some_file.txt /var/cspvpn/some_file.txt
Также можно использовать данные префиксы при временном присваивании переменных среды. Например:
sterragate#run SOME_VAR=file:some_file.txt env | grep SOME_VAR
SOME_VAR=/var/cspvpn/some_file.txt
sterragate#run SOME_VAR="file:some_file.txt" env | grep SOME_VAR
SOME_VAR=/var/cspvpn/some_file.txt
sterragate#run SOME_VAR=" file:some_file.txt" env | grep SOME_VAR
SOME_VAR= file:some_file.txt
sterragate#run SOME_VAR='file:some_file.txt' env | grep SOME_VAR
SOME_VAR=file:some_file.txt
Примеры (для маршрутизаторов ESR-ST)
Подстановка отсутствует:
esr-100#run cert_mgr import -f 'flash:some_file.txt'
flash:some_file.txt couldn't open file
esr-100#run cert_mgr import -f " flash:some_file.txt"
flash:some_file.txt couldn't open file
Подстановка присутствует:
esr-100#run cert_mgr import -f flash:some_file.txt
/var/cspvpn/some_file.txt couldn't open file
esr-100#run cert_mgr import -f "flash:some_file.txt"
/var/cspvpn/some_file.txt couldn't open file
Следует соблюдать аккуратность при использовании специальных возможностей командного интерпретатора. Такие как:
· Перенаправление ввода из файла и вывода в файл (< > << >> и т.п.).
· Перенаправление вывода в другую команду, команды проверки условий и т.п. (кроме маршрутизаторов ESR-ST).
В некоторых случаях такие команды будут отвергнуты или выполнятся с ошибкой.
· Может не работать подстановка пути к файлу из префикса.
· Рекомендуется всегда ставить пробелы до и после специальных модификаторов. Например:
Рекомендуется. В результате будет создан файл с именем some_file.txt
esr-100#run cert_mgr show > flash:some_file.txt
Не рекомендуется. В результате будет создан файл с именем flash:some_file.txt
esr-100#run cert_mgr show>flash:some_file.txt
Для маршрутизаторов ESR-ST присутствует ряд ограничений:
· Допустимо запускать только исполняемые файлы, лежащие в директории /opt/VPNagent/bin или /opt/UPAgent/bin. При этом можно писать как просто имя файла, так и писать полный путь, например:
run cert_mgr show
run /opt/VPNagent/bin/cert_mgr show
· Текущая директория при выполнении: /var/cspvpn
· Нельзя запускать исполняемые файлы из поддиректорий, например
run subdir/qqq
run /opt/VPNagent/bin/subdir/qqq
· Нельзя использовать .., например:
run /opt/VPNagent/bin/../../../bin/echo
· Нельзя использовать принудительный запуск скрипта:
run . some_script
· Нельзя использовать специальные символы:
; & | ` $ ( ) ! [ ] { }
Примечание: их можно использовать после обратного слэша или в кавычках. Например:
\; "|" '!'
· Не допускается временное присваивание переменных среды. Например:
run SOME_VAR=1 cert_mgr show
· Если сделана попытка выполнить запрещенную команду, будет выдано сообщение об ошибке:
% Shell command is not supported
Команда do run позволяет выполнять команды командного интерпретатора операционной системы из конфигурационного режима.
Отличие данной команды от подобной команды Cisco IOS
Команда run отсутствует у Cisco.
Пример
Приведенный ниже пример содержит информацию, которая выводится при выполнении команды run /sbin/ifconfig
Router#run /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 00:0E:0C:6F:0F:E6
inet addr:192.168.16.2 Bcast:192.168.16.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:34 errors:0 dropped:0 overruns:0 frame:0
TX packets:39 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2226 (2.1 KiB) TX bytes:2539 (2.4 KiB)
Base address:0xcc00 Memory:c0100000-c0120000
eth1 Link encap:Ethernet HWaddr 98:00:54:76:10:33
inet addr:192.168.17.133 Bcast:192.168.17.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1239 errors:0 dropped:0 overruns:0 frame:0
TX packets:134 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:131023 (127.9 KiB) TX bytes:11978 (11.6 KiB)
Base address:0xc800 Memory:c0120000-c0140000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:27 errors:0 dropped:0 overruns:0 frame:0
TX packets:27 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2323 (2.2 KiB) TX bytes:2323 (2.2 KiB)