Как сгенерировать случайное однозначное число с помощью оболочки

Да :вы можете настроить мост на поддержку VLAN.

Затем мост будет обрабатывать идентификаторы VLAN, прикрепленные к кадрам, пересекающим его, включая пометку и снятие тегов с них в соответствии с конфигурацией, и будет отправлять кадр, принадлежащий данной VLAN, только на порты, сконфигурированные для его приема. Это переносит все настройки на сам мост, вместо того, чтобы использовать субинтерфейсы VLAN (, эти субинтерфейсы, конечно, все еще можно использовать в некоторых настройках ).

Эта функция недоступна с помощью устаревшей команды brctl, но требует более новой замены командыbridge(вместе с обычной командойip link). Это более простая установка (с одним мостом, без вспомогательного интерфейса -).

Метод заключается в настройке tap1в качестве тегированного мостового порта с идентификатором VLAN (VID )5 и eth0также с VID 5, но установленным как нетегированный :вывод становится нетегированным, а с этот VID как вход PVID (Port VLAN ID ):помечается им внутри моста. На порт может быть только один PVID.

В то же время можно удалить идентификатор VLAN, равный 1, назначенный по умолчанию каждому порту (, если, конечно, более сложная настройка не потребует нескольких VLAN ), чтобы сохранить чистую конфигурацию.

пока ваша установка только с более новыми командами должна выглядеть так:

ip link set eth0 up
ip link set tap1 up

# the following line could have directly included at bridge creation the additional parameter `vlan_filtering 1`
ip link add name br0 type bridge

ip link set tap1 master br0
ip link set eth0 master br0

Конкретные настройки моста с поддержкой VLAN, начиная с активации функции:

ip link set dev br0 type bridge vlan_filtering 1

bridge vlan del dev tap1 vid 1
bridge vlan del dev eth0 vid 1

bridge vlan add dev tap1 vid 5
bridge vlan add dev eth0 vid 5 pvid untagged

ip link set br0 up

Обратите внимание, что самонеявный порт моста по-прежнему использует VID 1, поэтому назначение IP-адреса непосредственно на мосту, как это делается для некоторых настроек, теперь не будет обеспечивать надлежащую связь. Если такая конфигурация действительно необходима, вы также можете установить собственный порт моста в VLAN 5 с немного другим синтаксисом (self), потому что это сам мост :

.

bridge vlan del dev br0 vid 1 self
bridge vlan add dev br0 vid 5 pvid untagged self

Обычно чище (по-прежнему удалять VID 1 моста по умолчанию, чтобы предотвратить его любое возможное взаимодействие, )добавить пару veth ,подключите один конец к мосту, настройте его параметры моста vlan так же, как eth0, и назначьте IP на другом конце.

Хорошая серия блогов на эту тему:

Fun with veth-devices, Linux bridges and VLANs in unnamed Linux network namespaces
I II III IV V VI VII VIII

1
08.11.2020, 20:06
4 ответа
shuf -i0-9 -n1

shufгенерирует случайные перестановки, -iпринимает аргумент диапазона, поэтому мы предоставляем диапазон 0-9, а -n1похож на head, печатает только первую из случайных цифр.


Или вы можете использовать RANDOMвстроенную -переменную оболочки Korn -, например оболочки (ksh, zsh, bash, yash; также busybox sh ).

echo "$((RANDOM % 10))"

, а RANDOM— это (изman bash)

a random integer between 0 and 32767

это означает, что вероятность некоторых цифр немного ниже, если это имеет значение.

Для номеров 0-7это 100 * 3277 / 32767 ≈ 10.00092 %.

Для номеров 8и 9,100 * 3276 / 32767 ≈ 9.99786 %

6
18.03.2021, 22:51

Используйте команду shuf утилиты GNU:

shuf -i 0-9 -n 1
0
18.03.2021, 22:51

Существует 10 "однозначных" чисел --от 0 до 9. (Десять не является однозначной цифрой. )Итак, если вы хотите сделать это с помощью чистого Bash, не прибегая к внешним командам, вы можете делать такие вещи, как:

echo $((RANDOM%10))
7

((RND=RANDOM%10))
echo $RND
4
1
18.03.2021, 22:51

POSIXly:

awk 'BEGIN{srand(); print int(rand()*10)}'

Имейте в виду, что в большинстве awkреализаций это даст одно и то же число, если вызвать его дважды в течение одной секунды.

1
18.03.2021, 22:51

Теги

Похожие вопросы