На самом деле ответ для виртуальной машины services
может быть... это зависит от обстоятельств. Если это приложения, вы можете указать их на электронную почту :25/TCP.
Если мы говорим о демонах/сервисах, вы настраиваете обе в services
и http-proxy
ВМ:
в exim, как смартхостemail
простой postfix
с релейным хостом, сконфигурированным так, чтобы он указывал на хост email
. Как и вmain.cf
:
relayhost = email
Или вы можете настроить облегченный сервер пересылки SMTP как ssmtp
, который просто пересылает электронные письма, отправленные API, совместимым с sendmail
.
В ssmtp.conf
вы определяете затем:
hostname=FQDN # full DNS name of your server where `ssmtp` is installed
mailhub=email # name or IP address of your central SMTP server
sSMTP -Простой SMTP
sSMTP is a simple MTA to deliver mail from a computer to a mail hub (SMTP server). sSMTP is simple and lightweight, there are no daemons or anything hogging up CPU; Just sSMTP. Unlike Exim4, sSMTP does not receive mail, expand aliases, or manage a queue.
Вы должны определить свои позиционные аргументы вне командной строки:
echo a b c d | xargs -I VALUES sh -c "echo \$4 \$3 \$2 \$1" command VALUES
Это не очень хорошо описано (в моем случае изman dash
)
-c
Read commands from the command_string operand instead of from the standard input. Special parameter 0 will be set from the command_name operand and the positional parameters ($1, $2, etc.) set from the remaining argument operands.
Но ведет себя как лучше объяснено вman bash
:
-c
If the -c option is present, then commands are read from the first non-option argument command_string. If there are arguments after the command_string, the first argument is assigned to $0 and any remaining arguments are assigned to the positional parameters. The assignment to $0 sets the name of the shell, which is used in warning and error messages.
Обратите внимание, что строка команды _устанавливается в качестве первого аргумента после строки команды в кавычках (=$0
)
В вашем случае вы использовали параметр -I
без аргумента, что означает, что считываемые значения xargs
не просто добавляются, а должны вызываться через '{}'
. Так что либо используйте это:
echo 1 2 3 4 | xargs sh -c "echo \$4 \$3 \$2 \$1" command
ИЛИ это
echo 1 2 3 4 | xargs -I sh -c "echo \$4 \$3 \$2 \$1" command '{}'
Подсказка :используйте параметр -x
из sh
и параметр -t
из xargs
, чтобы лучше отслеживать странное поведение. Они будут печатать каждую командную строку перед ее выполнением.