Как перенести команды iptables вокруг Ruby webrick сервер, идущий вверх и вниз в единственной команде/сценарии?

Странная строка «@ (#)» на самом деле используется древней системой управления версиями SCCS . В частности, команда what просматривает файл (двоичный или текстовый) и находит строки с завершающим символом ASCII-Nul, которые начинаются с "@ (#)", и выводит эту строку. Это позволило вам встраивать номера версий ASCII для печати в файлы «.o» и, в конечном итоге, в исполняемые файлы, чтобы вы могли сказать, какие версии каких файлов оказались в исполняемом файле.

Я думаю, что аналогичную функцию выполняла команда RCS ident .

Начальный символ «#» превращает оставшуюся часть строки в комментарий ksh , поэтому я предполагаю, что какой-то проект написал все свои сценарии ksh так, чтобы SCCS ] what команда распечатала бы все случаи использования скриптов и т. д.

1
13.04.2017, 15:36
1 ответ

Если требуется пропустить существующие файлы без обновления , даже если в них есть изменения, используйте флаг --ignore-existing в команде rsync.

rsync --ignore-existing -avzh --delete --progress --filter = '-p .DS_Store'/Volumes/USBDrive/Foto/*/Volumes/Nas/Foto

см. https://explainshell.com

-121--102880-

можно использовать команду sed pipielined для grep

grep "sda" |sed -n '2'p

, если во второй строке этого не указан конкретный номер строки

-121--251281-

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

#!/usr/bin/env ruby

require 'webrick'
system *%W(sudo iptables -I INPUT -p tcp --dport 3000 -j ACCEPT)
server = WEBrick::HTTPServer.new(:Port => 3000,
                                 :DocumentRoot => '~/webrickroot')

# stop server with Ctrl-C
trap('INT') { server.stop; system *%W(sudo iptables -D INPUT -p tcp --dport 3000 -j ACCEPT) }
server.start

Используя для удобства массив пустых разделенных слов с система , чтобы отразить некоторые проблемы для разумности того, как конструкции команд могут быть интерпретированы и обработаны в целом. Каждый маркер, по-видимому, предоставляется sudo в качестве аргумента здесь 1 . Разумеется, вам потребуется пароль (дважды), так как для iptables требуются привилегии суперпользователя для любого существенного использования, включая интерактивное добавление и удаление правил.


1. Как продемонстрировано с системой apt ruby -e '*% W (ls -1 foo; rm -rf/) '. Конечно, НЕ пытайтесь сделать это без компонента массива splat + word (*% W) при кавычке того, что находится внутри скобок.

1
27.01.2020, 23:51

Теги

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