Увеличение значения во время выполнения цикла в cURL

Я бы предложил пару вариантов.

  1. Защитить ключ ssh и потребовать использования sudo на стороне вашей команды поддержки. Это можно сделать прозрачно с помощью обертки. Назовите обертку, скажем, /usr/local/bin/ssh-support и пусть она содержит что-то вроде этого (не проверено):

    #!/bin/bash
    export PATH=/usr/local/bin:/usr/bin:/bin
    export IFS=$' \t\n'
    export SUSER=ssupport
    
    # Перезапустите, если не запущен под sudo
    test "X$1" != 'X-S' && exec sudo -u "$SUSER" /usr/local/bin/ssh-support -S "$@"
    сдвиг
    export SHOME="$(getent passwd "$SUSER" | cut -d: -f6)"
    
    # Извлекаем единственный аргумент в виде имени хоста LABEL и проверяем, что у нас есть
    # закрытый ключ RSA для него. Имя целевого пользователя, реальное имя хоста, порт,
    # и т.д. могут быть определены в ~/.ssh/config для пользователя $SUSER (ssupport)
    label="$1"
    idfile="$SUSER/.ssh/id_rsa_for_$label"
    cgfile="$SUSER/.ssh/config"
    
    ok=true
    [[ "$label" =~ '/' ]] && { echo "Invalid label: $label" >&2; ok=; }
    [[ ! -s "$idfile" ]] && { echo "Отсутствует файл идентификации: $idfile" >&2; ok=; }
    [[ ! -s "$cgfile" ]] && { echo "Отсутствует файл конфигурации: $cgfile" >&2; ok=; }
    
    if test -n "$ok"
    тогда
     logger -t ssh-support "$SUDO_USER запросил ssh на $label"
     exec ssh -i "$idfile" -F "$cgfile" "$label"
    fi
    exit 1
    

    Для этого потребуется запись в файле sudoers, которая разрешает пользователям из группы support использовать этот инструмент. Эта команда позволяет им запускать инструмент ssh-support от имени пользователя ssupport, которого вы должны создать. Он не предоставляет привилегий root.

    %support ALL = (ssupport) /usr/local/bin/ssh-support
    

    Если вас устраивает, что пользователям поддержки не нужно вводить свой пароль для запуска инструмента (как того требует sudo в самом скрипте), вы можете изменить определение sudoers следующим образом:

    %support ALL = (ssupport) NOPASSWD: /usr/local/bin/ssh-support
    

    Предполагая, что PATH содержит /usr/local/bin/, вы бы вызвали его с помощью ssh-support clientname. Также предполагая, что вы создали пользователя ssupport как /home/ssupport, вы создадите /home/ssupport/.ssh/id_rsa_clientname и /home/ssupport/. ssh/id_rsa_clientname.pub в качестве пары сертификатов, и иметь запись хоста в /home/ssupport/.ssh/config для clientname, которая определяет пользователя, хост, порт и т.д. для целевой машины. Вы, вероятно, отключите переадресацию X11, переадресацию портов и т.д. в явном виде. Как обычно, каталог /home/ssupport/.ssh должен быть защищен правами 0700.

  2. Дайте каждому члену группы поддержки свою собственную учетную запись локального пользователя, и пусть каждый использует свой личный ssh-ключ для доступа к серверам клиента. Когда человек покидает группу поддержки, вы удаляете его ssh-ключ с серверов клиента. Это означает, что вам больше не нужно беспокоиться о том, чтобы ваши сотрудники не узнали закрытый ключ ssh.

1
04.02.2019, 14:53
1 ответ

Вам просто нужно использовать $iвместо 1и сохранить текст в двойных кавычках вместо одинарных для этой опции:

for ((i=1;i<=5;i++)); do curl -s --user 'api:key- MY_KEY' \
    https://api.mailgun.net/v3/sandbox/messages \
    -F from="test$i@gmail.com" \
    -F to='test@site.com'  \
    -F subject='Test Subject' \
    -F text='Hey'; done

$i— это значение переменной i, которую вы увеличиваете от 1 до 5 в цикле.

2
27.01.2020, 23:43

Теги

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