Как распечатать диапазон IP-адресов с Linux seq команда

ZFS на Linux не имеет критической массы после, независимо от того, что это может быть. ZFS эффективно привяжет Вас. Базовый формат является несовместимым со спасательными дисками и дистрибутивами, для которых Вы найдете, ZFS редок.

Я был бы склонен пропускать эти пределы из-за моей предвзятости к ZFS. Можно хотеть погуглить для поставщика услуг, который предоставляет SmartOS/ZFS базирующийся Облачный хостинг.

Файловые системы Linux ext3/ext4 и вероятно различные другие действительно допускают динамический рост. Менеджер томов, встроенный в Linux, LVM, также позволяет Вам динамично разворачивать объемы на новые диски. Для чего-либо кроме экспериментирования это должно было бы быть текущей лучшей рекомендацией Linux, хотя это изменится, после того как ZFS получила критическую массу, следующую Linux.

Процесс для Linux + LVM + ext3:

Пример: группа объема LVM myvg, смонтированное имя тома uservol1, и дисковое устройство в Linux является/dev/sdf

  1. Выделите диск VM. (в Консоли управления Amazon Создайте объем EBS, запишите его идентификатор и выделите его экземпляру),
  2. Экземпляр EC2 должен иметь некоторые правила udev для создания узла устройства. Таким образом, необходимо видеть новый диск в/dev/sd*... Войдите в систему на экземпляре и проверьте, что объем EBS видим, например, fdisk-l/dev/sdf, кошка/proc/partitions, выполняют blkid.
  3. Создайте таблицу разделов в случае необходимости: fdisk / sfdisk
  4. Инициализируйте для использования LVM: pvcreate /dev/sdf
  5. Добавьте диск (физический том) к группе объема LVM vgextend myvg /dev/sdf
  6. Вырастите Размер тома: lvextend -L +1024G /dev/myvg/uservol1
  7. Вырастите ext3/ext4 файловую систему: resize2fs /dev/myvg/uservol1
  8. Проверьте (df -h) и необходимо видеть, что смонтированная файловая система теперь имеет больше пространства.

ЧТО И ТРЕБОВАЛОСЬ ДОКАЗАТЬ.

8
20.11.2014, 08:58
6 ответов

В настоящее время это невозможно. Однако systemd-networkd-wait-online.service можно использовать только в качестве зависимости от загрузки для изменения конфигурации tinc. В моем опыте tinc будет быстро реагировать на изменения в конфигурации сети. По крайней мере в Linux он может использовать rtnetlink для прослушивания изменений интерфейсов.

-121--41837-

Для печати диапазона IP-адресов можно использовать команду sed с seq.

seq 2 23 | sed 's/^/10.0.0./'

ИЛИ с использованием эха и tr

echo 10.0.0.{2..23} | tr ' ' '\n'
-121--46379-

Используйте формат:

$ seq -f "10.20.30.%g" 40 50
10.20.30.40
10.20.30.41
10.20.30.42
10.20.30.43
10.20.30.44
10.20.30.45
10.20.30.46
10.20.30.47
10.20.30.48
10.20.30.49
10.20.30.50

К сожалению, это неочевидно, так как GNU не любит писать человеко-страницы.

22
27.01.2020, 20:08

Вы можете использовать команду SED с SEQ для печати диапазона IP-адреса.

seq 2 23 | sed 's/^/10.0.0./'

Или использование ECHO и TR

echo 10.0.0.{2..23} | tr ' ' '\n'
8
27.01.2020, 20:08

Команда printf выполняет неявную итерацию, если ей задано больше аргументов, чем спецификаторов преобразования. Например:

$ printf "%s-%s\n" 1 2 3 4 5 6
1-2
3-4
5-6

Есть два преобразования, но шесть аргументов. Таким образом, происходит три повторения логики форматирования, попарно перебирая аргументы.

С этим мы можем сделать:

printf "10.0.0.%s\n" $(seq 1 23)

Команда printf и ее повторяющееся поведение соответствуют стандарту POSIX : «Операнд формата должен использоваться повторно так часто, как необходимо для удовлетворения аргументов операндов. " С другой стороны, команда seq - нет.

3
27.01.2020, 20:08

Существует утилита prips , которая генерирует список IP-адресов из диапазона или CIDR. Полезно для работы с большими диапазонами:

$ prips 10.0.0.20 10.0.0.23
10.0.0.20
10.0.0.21
10.0.0.22
10.0.0.23

$ prips 10.0.0.0/23
10.0.0.0
10.0.0.1
10.0.0.2
<...>
10.0.1.254
10.0.1.255
11
27.01.2020, 20:08
for i in $(seq 2 23); do echo "10.0.0.$i"; done
3
27.01.2020, 20:08

Если мы удалим требование использовать команду seq и предположим, что доступна команда ipcalc, а Ubuntu prips нет, то prips можно реализовать как функцию оболочки Bash:

prips() {
  cidr=$1

  # range is bounded by network (-n) & broadcast (-b) addresses.
  lo=$(ipcalc -n $cidr |cut -f2 -d=)
  hi=$(ipcalc -b $cidr |cut -f2 -d=)

  read a b c d <<< $(echo $lo |tr . ' ')
  read e f g h <<< $(echo $hi |tr . ' ')

  eval "echo {$a..$e}.{$b..$f}.{$c..$g}.{$d..$h}"
}

Обратите внимание, что это будет включать сетевой адрес и широковещательный адрес в диапазоне; если это проблема, удалите первый и последний адрес из результата.

2
27.01.2020, 20:08

Теги

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