Как пройтись по файлу и выполнить строки

Here is an [example] of the ftp helper added by enabling the ftp service in the public zone.

Похоже, что «помощник» ftp включается только в том случае, если вы специально разрешили «службу» ftp в firewalld. Для каждого вспомогательного определения должно быть соответствующее определение службы.

Первоначально я думал, что вы будете включать «службу», только если вы используете, например. FTP-сервер . FTP пассивный режим, который в настоящее время является предпочтительным, по-прежнему требует дополнительного подключения. Клиент должен подключиться к серверу по второму порту, чтобы передать данные файла. «Помощник» необходим, чтобы определить, какой порт используется, и разрешить это дополнительное соединение.

Ни один из помощников не помечен как -client(, как сервисdhcpv6-client). Но, насколько я могу судить, включение службы FTP на клиенте позволит ему использовать исходный FTP активный режим (, предполагая, что firewalldявляется единственным брандмауэром в сети. способ ). Я думаю, что этот пример не представляет большой проблемы с безопасностью, но он может быть очень запутанным :-(.

(Nitpick :FedoraWorkstation в любом случае разрешает активный режим FTP, потому что он разрешает входящие соединения на любой порт выше 1024. Пожалуйста, не просите меня объяснить, почему ).

Вторым примером, на который я смотрел, был помощник irc, но я не могу его понять. Мне он кажется сломанным.

# cat /usr/lib/firewalld/helpers/irc.xml
<?xml version="1.0" encoding="utf-8"?>
<helper module="nf_conntrack_irc" family="ipv4">
  <port protocol="tcp" port="194"/>
</helper>
# cat /usr/lib/firewalld/services/irc.xml 
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>IRC</short>
  <description>An IRCd, short for Internet Relay Chat daemon, is server software that implements the IRC protocol.</description>
  <port protocol="tcp" port="6667"/>
</service>
0
18.03.2021, 11:50
2 ответа

bashскрипты

  1. выполняется в порядке строк
  2. за исключением случаев, когда вы не успеваете

Хэшбанг #!/bin/bashнеобходим только в том случае, если вы хотите сделать сам файл исполняемым и показать, какая команда предназначена для интерпретации командных строк, следующих после этого.

Итак, все, что вам нужно сделать, этоbash your-command-file

Проверьте этот «командный файл».Сохраните его как commands1и запуститеbash commands1

echo -n "Hi, "
sleep 1
echo -n "how "
sleep 1
echo -n "are "
sleep 1
echo "you?"

И сравните с этим(commands2):

echo -n "Hi, " &
sleep 1 &
echo -n "how " &
sleep 1 &
echo -n "are " &
sleep 1 &
echo "you?"

Как видите, в последнем случае команды выполняются более или менее параллельно, отправляя выполнение команд фоновым процессам через &.

1
18.03.2021, 22:25

Ваш список команд фактически является сценарием оболочки, даже без шебанга (строка #!/bin/bashвверху ). Вы можете указать его в качестве аргумента для оболочки, и оболочка будет выполнять его по одной строке за раз, ожидая завершения выполнения :

.
bash my_commands.txt

или, если вашим командам на самом деле не нужны bash,

sh my_commands.txt
5
18.03.2021, 22:25

Теги

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