Передать позиционные аргументы

На самом деле ответ для виртуальной машины 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.

0
07.11.2019, 23:23
1 ответ

Вы должны определить свои позиционные аргументы вне командной строки:

 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, чтобы лучше отслеживать странное поведение. Они будут печатать каждую командную строку перед ее выполнением.

1
28.01.2020, 02:39

Теги

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