Загрузка команд из файла

Если бы мне пришлось угадывать, не будучи на самом деле во главе поколения разработчиков и сопровождающих Debian, моя догадка была бы такой:

Debian в первую очередь разработан как серверная операционная система, и sid-, и тестовая ветки имеют своей основной целью создание следующей стабильной ветки, и во время заморозки они замораживаются, а новая стабильная версия берется из тестовой., как это только что произошло с Stretch.

Учитывая это, я также предположил бы, что мне нужно будет подтвердить это с другом системным администратором, что брандмауэры центров обработки данных являются внешними устройствами, гораздо более безопасными (по крайней мере, кто-то надеется, что это так )), к серверы и выполнять основные задачи брандмауэра. Даже в небольшой локальной сети с маршрутизатором это так, маршрутизатор является брандмауэром, я не использую никаких правил локального брандмауэра ни в одной из своих систем, зачем мне это?

Я думаю, возможно, люди путают свои локальные установки Debian для настольных ПК или отдельного файлового сервера в офисе или дома с реальной работой, связанной с Debian, которая, как я полагаю, в основном ориентирована на использование в производстве.

Я не уверен в этом, но после более чем десяти лет использования Debian я чувствую это как разработчик и сторонник Debian во многих отношениях.

Я могу проверить это, так как на самом деле это хороший вопрос, но я предполагаю, что настоящие сети защищены брандмауэрами в точках входа в сеть, а не на основе каждой машины, или, по крайней мере, это основная идея, что возможно, будет управлять Debian. Кроме того, конечно, если бы это было не так, системный администратор устанавливал бы правила брандмауэра для каждой машины отдельно, используя что-то вроде Chef, не полагаясь на установку по умолчанию, что не было бы тем, к чему вы стремились бы. доверять, например, конфигурации Debian ssh по умолчанию — это не то, что я бы лично использовал по умолчанию, например, они разрешают вход в систему root по умолчанию, и системный администратор должен исправить это, если они сочтут это плохой практикой..

То есть, я думаю, существует предположение о компетентности Debian, которое может отсутствовать в некоторых других дистрибутивах. Например, вы меняете то, что хотите изменить, создаете изображения, управляете ими с помощью программного обеспечения для управления сайтом и так далее. Это всего лишь несколько возможностей. Например, вы никогда не будете использовать DVD для создания нового сервера, по крайней мере, никогда не будете использовать в производстве, вы, вероятно, будете использовать что-то вроде минимальной сетевой установки, которую я всегда использую, например (Раньше я использовал даже уменьшенное изображение, но они прекратили его выпуск ). Если вы взглянете на то, что включено в эту базовую установку, вы получите хорошее представление о том, что Debian считает важным, а что нет. ssh есть, например. Xorg нет, Samba нет.

Можно также спросить, почему они вернулись к GNOME в качестве рабочего стола по умолчанию, но это просто решения, которые они принимают и которые их пользователи в основном игнорируют, поскольку вы можете сделать системы такими, как вы хотите (, то есть получить Рабочие столы Xfce, я не устанавливаю Xdebian (, как в Xubuntu ), я просто устанавливаю ядро ​​Debian, Xorg и Xfce, и все готово ).Аналогичным образом, если бы мне нужен брандмауэр, я бы настроил его, изучил все тонкости и т. д., но я бы лично не ожидал, что Debian будет поставляться с включенным, меня бы это немного раздражало, если бы он был. Возможно, мои взгляды на это отражают своего рода консенсус, который вы также можете найти внутри Debian.

Кроме того, на самом деле такой вещи, как Debian, не существует, есть различные установочные образы, netinstall, полная установка, все они варьируются от barebone-систем, только cli до достаточно полного пользовательского рабочего стола. Например, рабочие пользователи, вероятно, будут создавать образы, которые будут настроены так, как хочет пользователь. Я знаю, что если бы я настраивал сервер Debian, я бы начал с необработанных основ и наращивал бы его, пока он не сделал бы то, что я хотел.

Тогда у вас есть мир веб-серверов, который представляет собой совершенно другой восковой шарик, у них очень разные вопросы безопасности, и, как сказал мой старый друг, хорошо связанный с хакерским подпольем, кто-то, кто управляет веб-сервером, не зная как его обезопасить можно также назвать того, чей сервер принадлежит взломщикам.

6
23.03.2019, 21:07
2 ответа

Если у вас есть файл со списком команд оболочки, по одной в строке, то у вас есть сценарий оболочки! Все, что вам нужно сделать, это запустить его:

sh file_commands

Однако это не самый простой подход к тому, что, как мне кажется, вам нужно. Если вы хотите запустить program.awkдля каждого файла d??.activeв текущем каталоге, вы можете просто использовать цикл:

for file in d??.active; do awk -f program.awk "$file" > "$file".out; done

Будет создан выходной файл d01.active.outдля d01.active, файл d02.active.outдля d02.activeи так далее.

10
27.01.2020, 20:22

Сценарий оболочки — это, по сути, список команд, заканчивающийся разделителями строк, который будет интерпретироваться как список команд указанным интерпретатором (или интерпретатором по умолчанию ).

Чтобы указать интерпретатор, ваш файл должен начинаться с хэш-банга (, также называемого шебангом ).

Примеры:

#!/bin/sh
#!/bin/bash
#!/bin/ksh
#!/bin/zsh
#!/usr/bin/env bash

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


После вашего hashbang вы можете просто начать перечислять свои команды, которые будут выполняться каждая в отдельной строке.

Обратите внимание, :эти команды будут выполняться в порядке сверху вниз


В вашем примере вам нужно что-то вроде:

#!/bin/sh

awk -f program.awk d01.active > out1
awk -f program.awk d02.active > out2

Затем вам нужно будет сделать этот файл исполняемым и запустить его, указав полный или относительный путь к файлу в командной строке. (или запустивsh /path/to/file)


Это похоже на потенциальную проблему x -y, и, вероятно, ее можно решить более программным способом.

Например,:

#!/bin/bash

for file in d??.active; do
    n=${file:1:2}
    awk -f program.awk "$file" > "out$n"
done
5
27.01.2020, 20:22

Теги

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