como customizar a carga útil

1

Estou tentando integrar o slack com um dos meus scripts de shell. Eu tenho condições diferentes, para as quais a parte de mensagem da carga útil é diferente.

Meu script será parecido com

#!/bin/bash

SLACK_URL='https://hooks.slack.com/services/******
CHANNEL="#channel"
PAYLOAD="'payload={\"channel\": \"${SLACK_CHANNEL}\", \"username\": \"${USER}\", \"text\": \"$MESSAGE\", \"icon_emoji\": \":slack:\"}"

Caso 1:   condição:

 curl -s -S -X POST --data-urlencode "$PAYLOAD" $SLACK_URL

Caso 2:   condição

  curl -s -S -X POST --data-urlencode "$PAYLOAD" $SLACK_URL

Caso 3:   condição

  curl -s -S -X POST --data-urlencode "$PAYLOAD" $SLACK_URL

Em cada caso, minha mensagem deve ser diferente. Eu estou tentando evitar declarar payload cada vez com mensagem personalizada, procurando uma opção onde eu possa analisar minha mensagem personalizada para minha carga útil. Ajuda por favor.

    
por wubyz 18.03.2017 / 08:28

1 resposta

0

Você pode criar seu $PAYLOAD peça por peça com base nas suas condições:

PAYLOAD="payload={"
PAYLOAD="$PAYLOAD\"channel\": \"${SLACK_CHANNEL}\","
PAYLOAD="$PAYLOAD\"username\": \"${USER}\","

case $MESSAGE_TYPE in
    1)
        PAYLOAD="$PAYLOAD \"text\": \"$MESSAGE1\","
        ;;
    2)
        PAYLOAD="$PAYLOAD \"text\": \"$MESSAGE2\","
        ;;
    3)
        PAYLOAD="$PAYLOAD \"text\": \"$MESSAGE3\","
        ;;
esac

PAYLOAD="$PAYLOAD \"icon_emoji\": \":slack:\""
PAYLOAD="$PAYLOAD}"

curl -s -S -X POST --data-urlencode "$PAYLOAD" $SLACK_URL

Como alternativa, você pode ter o Bash preguiçosamente avaliando $PAYLOAD com eval depois de definir $MESSAGE corretamente.

PAYLOAD_PATTERN='payload={\"channel\": \"${SLACK_CHANNEL}\", \"username\": \"${USER}\", \"text\": \"$MESSAGE\", \"icon_emoji\": \":slack:\"}'
MESSAGE=...
eval "PAYLOAD=\"$PAYLOAD_PATTERN\""

curl -s -S -X POST --data-urlencode "$PAYLOAD" $SLACK_URL

Este é um padrão comum na programação de shell. Observe, no entanto, que se qualquer parte das variáveis expandidas como parte de $PAYLOAD_PATTERN incluir entrada não confiável, usar eval dessa maneira pode levar a problemas de segurança como um adversário que tem a capacidade de influenciar qualquer parte da entrada arbitrariamente. use isso para obter recursos de execução arbitrária de código no sistema que está executando o script.

    
por 18.03.2017 / 12:28