Как может иметь размеры, сколько времени это берет мой сценарий, чтобы выполнить И включать это в электронное письмо, которое это генерирует?

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

# Print with pattern c
awk 'NR % 3 !=0 {printf $0;printf "|"} NR % 3 ==0 {printf $0; print " "}' file.txt | grep "\-pattern\ c\-" | sed 's/|/\n/g'

# Print without pattern c
awk 'NR % 3 !=0 {printf $0;printf "|"} NR % 3 ==0 {printf $0; print " "}' file.txt | grep -v "\-pattern\ c\-" | sed 's/|/\n/g'
11
07.02.2015, 03:57
4 ответа

Ну, я разобрался на решение - Хауке, спасибо, спасибо за то, что положить меня на правильный трек. После сравнения файла IFCFG с другим аналогичным сервером, который является маршрутизацией, как и ожидалось, я изменил имена моих суффиксов iPaddr. У меня есть ощущение, что, когда маршруты автоматически создаются, есть какая-то сортировка альфа, и суффикс «_External» был сортировать себя так, как я не хотел.

Новый файл:

admin1@server1:/etc/sysconfig/network# more ifcfg-eth2
BOOTPROTO='static'
BROADCAST=''
ETHTOOL_OPTIONS=''
IPADDR='192.168.100.160/24'
MTU=''
NAME='79c970 [PCnet32 LANCE]'
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='auto'
USERCONTROL='no'
IPADDR_0='207.47.100.160/24'
LABEL_0='external'
IPADDR_1='192.168.100.159/24'
IPADDR_2='207.47.100.159/24'

и выход маршрута теперь:

admin1@server1:/etc# ip route show
207.47.100.0/24 dev eth2  proto kernel  scope link  src 207.47.100.160
192.168.100.0/24 dev eth2  proto kernel  scope link  src 192.168.100.160
169.254.0.0/16 dev eth2  scope link
127.0.0.0/8 dev lo  scope link
default via 192.168.100.1 dev eth2

После запуска некоторых тестов на моих клиентах я могу видеть, что адрес .160 теперь используется для исходящих соединений.

Я не уверен, что эта конфигурация считается «лучшими практиками», но я возьму это. Еще раз спасибо.

-121--111577-

Я предлагаю взглянуть на различные Bash секунд секунд :

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

Таким образом, вы можете просто распечатать эту переменную в конце скрипта. В качестве альтернативы, если ваше намерение состоит в том, чтобы измерить время только части программы, то просто установить секунд = 0 в начале измеренного блока команд, а в конце просто используйте значение, сохраненное в этой переменной Отказ

15
27.01.2020, 19:57

Аутентификация на основе хоста работает без запроса паролей и установки пользовательских ключей pub

Выполните только шаг 1 и замените .shosts на .rhosts , чтобы использовать rsh , который безопасен в среде Kerberos.

1 Добавление имени узла клиента и имени пользователя, которому требуется доступ к серверу.
сервер $ echo '< имя _ узла > < имя _ пользователя >' > ~/.shosts

2 Добавление открытых ключей узла клиента к known_hosts сервера.
клиент $ cat/ etc/ssh/ssh_host_rsa_key.pub | ssh user @ server 'cat > > ~/.ssh/известный _ hosts'

3 Попросите сервер не выполнять обратный поиск ip-адреса клиента для поиска имени узла клиента.
сервер # echo 'HostbingUsesNameGroupPacketOnly yes' > >/ etc/ssh/sshd_config.

4 Попросите сервер не игнорировать файл shosts.
сервер # echo 'IgnityRhosts no' > >/ etc/ssh/sshd_config
server # service sshd reload

-121--254371-

На самом деле нет.

меньше имеет множество функций, связанных с ESC + что-то еще. См. руководство ESC v , ESC n , ESC F и многие другие. При получении только ESC будет невозможно ввести менее .

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

Это не лучший выбор ключа для использования. В VT100 (эмуляция терминала используется в основном везде в настоящее время) все управляющие последовательности терминала начинаются с символа ASCII ESC . Это означает, что каждый раз при нажатии клавиши со стрелкой терминал отправляет ESC , а затем другие данные. При нажатии клавиши ESC терминал также отправляет ESC , но за ним ничего не следует. Как программное обеспечение может определить разницу после получения символа ASCII ESC ? Он вынужден подождать некоторое время, чтобы узнать, следует ли что-либо за ESC . Поэтому только для ESC всегда возникает задержка, отставание во времени, прежде чем программное обеспечение сможет ответить.

-121--94443-

Вложить сценарий. Для отправки сообщения электронной почты существует ряд вариантов. Я лично предпочитаю msmtp для этого, вы можете определить заголовки самостоятельно стиль «здесь» (inline) или использовать отдельный файл и котировать их вместе. Существуют все виды альтернатив этому, включая perl, python и т.д.

Reply-To: someone@somehost
Sender: someone <someone@somehost>
To: somebody@somewhere.else
Subject: some subject
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: text/html; charset="iso-8859-1"

Поместите собранное сообщение в msmtp так:

cat assembled.eml | msmtp somebody@somewhere.else

Пессимист будет закольцовывать до успеха разумное количество раз.

Полезная нагрузка также может быть html и может быть создана php.

Очень уродливая альтернатива «пакетной» операции в одночасье, скажем, состоит в создании cronjob, и выходные данные отправляются по электронной почте вместо stdout/stderr.

1
27.01.2020, 19:57

Ну, я вроде как придумал решение - Хауке, спасибо, что поставил меня на правильный трек. После сравнения файла ifcfg с другим, аналогичным сервером, который маршрутизируется, как и ожидалось, я изменил имена моих суффиксов IPADDR. У меня такое ощущение, что когда маршруты автоматически создаются, происходит какая-то альфа-сортировка, а суффикс «_external» сортировал себя путь мне не хотелось.

Новый файл

admin1@server1:/etc/sysconfig/network# more ifcfg-eth2
BOOTPROTO='static'
BROADCAST=''
ETHTOOL_OPTIONS=''
IPADDR='192.168.100.160/24'
MTU=''
NAME='79c970 [PCnet32 LANCE]'
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='auto'
USERCONTROL='no'
IPADDR_0='207.47.100.160/24'
LABEL_0='external'
IPADDR_1='192.168.100.159/24'
IPADDR_2='207.47.100.159/24'

и выходные данные маршрута:

admin1@server1:/etc# ip route show
207.47.100.0/24 dev eth2  proto kernel  scope link  src 207.47.100.160
192.168.100.0/24 dev eth2  proto kernel  scope link  src 192.168.100.160
169.254.0.0/16 dev eth2  scope link
127.0.0.0/8 dev lo  scope link
default via 192.168.100.1 dev eth2

После выполнения некоторых тестов на моих клиентах я вижу, что адрес .160 теперь используется для исходящих подключений.

Я не уверен, что эта конфигурация считается «лучшей практикой», но я возьму ее. Еще раз спасибо.

-121--111577-

Я предлагаю взглянуть на bash переменную SECONDS :

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

Таким образом, вы можете просто напечатать эту переменную в конце сценария. Или, если вы хотите измерить время только части программы, то просто установите SECONDS = 0 в начале измеряемого блока команд, а в конце просто используйте значение, сохраненное в этой переменной.

-121--36343-

Префиксируйте команду с помощью /usr/bin/time и команда time выведет время выполнения сценария. Это более портативно, чем использование чего-либо bash .

8
27.01.2020, 19:57

Да. В любой оболочке POSIX, которую вы можете сделать...

set -o vi
^[[num]-#^[[num]_

... где ^ [ представляет клавишу ESC и [num] представляет необязательный параметр для n -й команды истории, отсчитываемой назад от текущей, и n -го аргумента в предыдущей команде, отсчитывающейся назад от последней соответственно. В зависимости от конфигурации клавиатуры можно использовать комбинацию клавиш CTRL и комбинацию клавиш.

Последовательность вызывает нумерованную команду, добавляет к ней комментарий # и сохраняет его в истории оболочки как самую предыдущую команду. Затем ярлык ^ [_ вызывает последний arg в последней команде.

bash также сохраняет последний arg по умолчанию в параметре оболочки $ _ , поэтому после выполнения первой части можно просто развернуть последний arg в этом пути.

-121--89293-

Если вы хотите прочитать их с помощью MUA (агента пользователя почты, клиентского программного обеспечения для чтения и записи почты), то вам нужно просто использовать программное обеспечение, поддерживающее формат Maildir. Mutt делает, для одного. Используйте параметр командной строки -f , чтобы указать, какую папку открыть:

mutt -f Mail/INBOX

mutt -f Mail/otherfolder

В зависимости от конфигурации папки Maildir могут храниться в расположении, отличном от ~/Mail , например ~/Maildir . Проверьте конфигурацию Dovecot или просто посмотрите на свой домашний каталог, чтобы узнать, где они находятся.

Другой способ, возможно, лучше, использовать тот факт, что Mutt (и другие MUA на основе терминалов тоже) поддерживают IMAP, так что вы можете просто сказать ему, чтобы получить доступ к почте через ваш сервер Dovecot и оставить детали того, как папки хранятся и организованы Dovecot. Для Mutt вы указываете папки IMAP с помощью специального синтаксиса:

mutt -f {username@imap-server}INBOX

Конечно, если доступ через IMAP, то вам не нужно запускать mutt в той же системе, что и сервер Dovecot.

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

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

-121--248751-

При использовании SECONDS и time вы получите относительные значения.Если вы хотите иметь абсолютные значения для целей аудита и отчетности относительно времени выполнения сценария и его завершения, вы можете попробовать что-то подобное до и после команд дата '+% Y% m% d% H% M% S.% N' . Это также может дать вам лучшую гранулярность, так как она может фиксировать различия в субсекундах, поскольку у вас есть команды, такие как ping , которые обычно выполняются в течение секунды.

6
27.01.2020, 19:57

Теги

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