diff options
| author | Daniil Baturin <daniil@vyos.io> | 2026-05-06 14:09:07 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-05-06 14:09:07 +0100 |
| commit | e066bb43eab070c58043f69efe87191b354b01e5 (patch) | |
| tree | a390c8fddb08a163feef6710818c10ffdc553733 /docs/automation/md-command-scripting.md | |
| parent | 22e34ce5aee24d2fd11f8205522ab7ecdb3c4c5e (diff) | |
| download | vyos-documentation-e066bb43eab070c58043f69efe87191b354b01e5.tar.gz vyos-documentation-e066bb43eab070c58043f69efe87191b354b01e5.zip | |
Revert "Add incremental RST-to-MyST swap mechanism (sagitta) (#1868)" (#1894)
This reverts commit 22e34ce5aee24d2fd11f8205522ab7ecdb3c4c5e.
Diffstat (limited to 'docs/automation/md-command-scripting.md')
| -rw-r--r-- | docs/automation/md-command-scripting.md | 219 |
1 files changed, 0 insertions, 219 deletions
diff --git a/docs/automation/md-command-scripting.md b/docs/automation/md-command-scripting.md deleted file mode 100644 index 5c2d8f19..00000000 --- a/docs/automation/md-command-scripting.md +++ /dev/null @@ -1,219 +0,0 @@ -lastproofread -2023-01-16 - -# Command Scripting - -VyOS supports executing configuration and operational commands non-interactively -from shell scripts. - -To include VyOS specific functions and aliases you need to `source /opt/vyatta/etc/functions/script-template` files at the top of your script. - -``` none -#!/bin/vbash -source /opt/vyatta/etc/functions/script-template -exit -``` - -## Run configuration commands - -Configuration commands are executed just like from a normal config session. For -example, if you want to disable a BGP peer on VRRP transition to backup: - -``` none -#!/bin/vbash -source /opt/vyatta/etc/functions/script-template -configure -set protocols bgp system-as 65536 -set protocols bgp neighbor 192.168.2.1 shutdown -commit -exit -``` - -## Run operational commands - -Unlike a normal configuration session, all operational commands must be -prepended with `run`, even if you haven't created a session with configure. - -``` none -#!/bin/vbash -source /opt/vyatta/etc/functions/script-template -run show interfaces -exit -``` - -## Run commands remotely - -Sometimes you simply want to execute a bunch of op-mode commands via SSH on -a remote VyOS system. - -``` none -ssh 192.0.2.1 'vbash -s' <<EOF -source /opt/vyatta/etc/functions/script-template -run show interfaces -exit -EOF -``` - -Will return: - -``` none -Welcome to VyOS -Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down -Interface IP Address S/L Description ---------- ---------- --- ----------- -eth0 192.0.2.1/24 u/u -lo 127.0.0.1/8 u/u - ::1/128 -``` - -## Other script languages - -If you want to script the configs in a language other than bash you can have -your script output commands and then source them in a bash script. - -Here is a simple example: - -``` python -#!/usr/bin/env python3 -print("delete firewall group address-group somehosts") -print("set firewall group address-group somehosts address '192.0.2.3'") -print("set firewall group address-group somehosts address '203.0.113.55'") -``` - -``` none -#!/bin/vbash -source /opt/vyatta/etc/functions/script-template -configure -source < /config/scripts/setfirewallgroup.py -commit -``` - -## Executing Configuration Scripts - -There is a pitfall when working with configuration scripts. It is tempting to -call configuration scripts with "sudo" (i.e., temporary root permissions), -because that's the common way on most Linux platforms to call system commands. - -On VyOS this will cause the following problem: After modifying the configuration -via script like this once, it is not possible to manually modify the config -anymore: - -``` none -sudo ./myscript.sh # Modifies config -configure -set ... # Any configuration parameter -``` - -This will result in the following error message: `Set failed` If this happens, -a reboot is required to be able to edit the config manually again. - -To avoid these problems, the proper way is to call a script with the -`vyattacfg` group, e.g., by using the `sg` (switch group) command: - -``` none -sg vyattacfg -c ./myscript.sh -``` - -To make sure that a script is not accidentally called without the `vyattacfg` -group, the script can be safeguarded like this: - -``` none -if [ "$(id -g -n)" != 'vyattacfg' ] ; then - exec sg vyattacfg -c "/bin/vbash $(readlink -f $0) $@" -fi -``` - -## Executing pre-hooks/post-hooks Scripts - -VyOS has the ability to run custom scripts before and after each commit - -The default directories where your custom Scripts should be located are: - -``` none -/config/scripts/commit/pre-hooks.d - Directory with scripts that run before - each commit. - -/config/scripts/commit/post-hooks.d - Directory with scripts that run after - each commit. -``` - -Scripts are run in alphabetical order. Their names must consist entirely of -ASCII upper- and lower-case letters,ASCII digits, ASCII underscores, and -ASCII minus-hyphens.No other characters are allowed. - -<div class="note"> - -<div class="title"> - -Note - -</div> - -Custom scripts are not executed with root privileges -(Use sudo inside if this is necessary). - -</div> - -A simple example is shown below, where the ops command executed in -the post-hook script is "show interfaces". - -``` none -vyos@vyos# set interfaces ethernet eth1 address 192.0.2.3/24 -vyos@vyos# commit -Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down -Interface IP Address S/L Description ---------- ---------- --- ----------- -eth0 198.51.100.10/24 u/u -eth1 192.0.2.3/24 u/u -eth2 - u/u -eth3 - u/u -lo 203.0.113.5/24 u/u -``` - -## Preconfig on boot - -The `/config/scripts/vyos-preconfig-bootup.script` script is called on boot -before the VyOS configuration during boot process. - -Any modifications were done to work around unfixed bugs and implement -enhancements that are not complete in the VyOS system can be placed here. - -The default file looks like this: - -``` none -#!/bin/sh -# This script is executed at boot time before VyOS configuration is applied. -# Any modifications required to work around unfixed bugs or use -# services not available through the VyOS CLI system can be placed here. -``` - -## Postconfig on boot - -The `/config/scripts/vyos-postconfig-bootup.script` script is called on boot -after the VyOS configuration is fully applied. - -Any modifications were done to work around unfixed bugs and implement -enhancements that are not complete in the VyOS system can be placed here. - -The default file looks like this: - -``` none -#!/bin/sh -# This script is executed at boot time after VyOS configuration is fully -# applied. Any modifications required to work around unfixed bugs or use -# services not available through the VyOS CLI system can be placed here. -``` - -<div class="hint"> - -<div class="title"> - -Hint - -</div> - -For configuration/upgrade management issues, modification of this -script should be the last option. Always try to find solutions based on CLI -commands first. - -</div> |
