Как создать исполняемый сценарий удара для этих команд?

Это - вероятно, Ваш клиент DHCP, блокирующийся до него, интерфейс имеет адрес. Точный ответ будет зависеть, на какой init системе Вы используете и какого клиента DHCP Вы используете. Для dhcpcd, например, Вы хотите удостовериться init сценарий, который запускается, это называют с -b флаг (фон сразу), и если это имеет -w флаг (ожидает), для стирания его.

Один протест состоит в том, что, если у Вас есть сервисы, запускающиеся после того, как этот интерфейс запускается, которые зависят от него имеющий IP-адрес, это могло вызвать проблемы, если они запускают через несколько секунд, прежде чем IP будет защищен. Имейте это в виду при обнаружении с какими-либо причудами.

2
26.05.2014, 00:18
1 ответ
[1179533] Шелловые скрипты не совсем то же самое, что набор на терминале.[1179981] Здесь произойдет то, что [1179982]iptables-save[1179983] будет ждать завершения [1179984]sudo su[1179985], а затем бежать. Что вы хотите, так это запустить [1179986]iptables-save[1179987] внутри [1179988] sudo[1179989].

$ perl -MDateTime -e1

Во-вторых, [1179990]sudo su[1179991] входит в число "бесполезных" примеров. Правильным эквивалентом является

sudo -i[1179994].

Есть 2 подхода к решению этого вопроса.

Метод 1

$ echo DateTime | perl -MFile::Spec -nE'BEGIN { say STDERR qq{Searching "${ \join(q{", "}, @INC)}"} } chomp; for my $dir ( @INC ) { my $module_file = File::Spec->catfile( $dir, split /::/, $_ ) . qq{.pm}; say $module_file if -e $module_file; }'
Он в основном запускает корневую оболочку и посылает эту команду через оболочку.[1179995]. Причина, по которой мы не просто добавляем [1179996] sudo[1179997] перед обеими командами [1179998] iptables-save[1179999] и [1180000] iptables- restore[1180001], заключается в том, что она запустит 2 [1180002] sudo[1180003] одновременно. Это не сработает, если оба они в конце концов попытаются запросить пароль.[1180004]. Таким образом, это решение позволяет обойти проблему, запустив только одну [1180005]sudo[1180006].

Одна строка

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

Метод 2

Это решение запускает [1180010]sudo[1180011] в первый раз, без какой-либо команды, просто [1180012]-v[1180013]. Это заставляет [1180014]sudo[1180015] запросить ваш пароль, если ваш сеанс закончился. Тогда любые команды, выполняемые в этом окне истечения сеанса, не потребуют ввода пароля. Поэтому одновременный запуск 2 [1180016]sudo[1180017]s больше не является проблемой, так как ни одна из них не будет запрашивать (мы добавляем [1180018]-n[1180019], чтобы быть абсолютно уверенными в этом. Это приведет к ошибке, если попытается). [1179550]

3
27.01.2020, 22:06

Теги

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